Catch error, wenn iframe src nicht geladen werden kann. Fehler: - "Weigerte," http://www.google.co.in/ "in einem Frame anzuzeigen .."
Ich bin mit Knockout.js
zu binden iframe src
tag(Dies konfiguriert werden, mit Bezug auf User).
Nun, wenn Benutzer konfiguriert hat http://www.google.com (ich weiß, es wird nicht geladen, in einem iframe, das ist, warum ich benutze es für die -ve-Szenario) und das hat zu sein gezeigt in einem IFrame.
aber es wirft Fehler:-
Weigerte sich, die Anzeige 'http://www.google.co.in/' in einem Rahmen, weil es
set 'X-Frame-Options' to 'SAMEORIGIN'.
Ich habe den folgenden code für Iframe:-
<iframe class="iframe" id="iframe" data-bind="attr: {src: externalAppUrl, height: iframeheight}">
<p>Hi, This website does not supports IFrame</p>
</iframe>
Was ich will, ist, wenn die url nicht geladen werden. Ich möchte die Anzeige Benutzerdefinierte Nachricht.
GEIGE
Nun, wenn ich mit onload und onerror:-
<iframe id="browse" style="width:100%;height:100%" onload="alert('Done')" onerror="alert('Failed')"></iframe>
Funktioniert es einwandfrei laden w3schools.com aber nicht mit google.com.
Zweitens:- wenn ich es als Funktion, und versuchen wie ich es getan habe in meinem fiddle, es funktioniert nicht.
<iframe id="browse" style="width:100%;height:100%" onload="load" onerror="error"></iframe>
Ich weiß nicht, wie soll ich es ausführen und einen Screenshot des Fehlers.
Bearbeitet:- ich habe gesehen, Eine Funktion aufgerufen werden soll, wenn der iframe nicht geladen wird oder geladen ist Frage bei stackoverflow, aber es zeigt Fehler an, für Seiten, die geladen werden können, in einem iframe.
Auch, ich habe mir in Stackoverflow iframe load event
Danke!!
InformationsquelleAutor der Frage Shubh | 2013-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass Sie binden können, die
Last
Veranstaltung der iframe, der das Ereignis ausgelöst wird, wenn der iframe-Inhalt vollständig geladen ist.Zur gleichen Zeit, können Sie beginnen, ein setTimeout, wenn das iFrame geladen wird, deaktivieren Sie das timeout alternativ lassen Sie die timeout-Feuer.
Code:
Demo: http://jsfiddle.net/IrvinDominin/QXc6P/
Zweite problem
Ist es, weil Sie vermissen die Klammern in die inline-Funktion aufrufen; versuchen Sie, ändern Sie diese:
in diesem:
Demo: http://jsfiddle.net/IrvinDominin/ALBXR/4/
InformationsquelleAutor der Antwort Irvin Dominin
Sie nicht in der Lage zu tun, dies von der client-Seite aufgrund der Same-Origin-Policy festgelegt, die von den Browsern. Sie werden nicht in der Lage zu erhalten viele Informationen aus dem iFrame als Basis-Eigenschaften wie Breite und Höhe.
Auch google setzt in seinen Antwort-header ein 'X-Frame-Options' SAMEORIGIN.
Selbst wenn Sie haben einen ajax-Aufruf von google, die Sie nicht in der Lage, untersuchen Sie die Antwort, weil der browser die Durchsetzung der same-Origin-Policy.
Also, die einzige option ist, um die Anfrage von deinem server zu sehen, wenn Sie die Anzeige der Seite in deinem IFrame.
Also, auf Ihren server.. deine web-app machen würde, einen Antrag zu http://www.google.com und überprüfen Sie dann die Antwort zu sehen, ob es eine Kopf-argument von X-Frame-Options. Wenn Sie existiert, dann wissen Sie das IFrame-Fehler.
InformationsquelleAutor der Antwort Evan Larsen
Onload wird immer ausgelöst, ich slove dieses problem mit try-catch-block.Es wird eine Ausnahme ausgelöst, wenn Sie versuchen, um die contentDocument.
InformationsquelleAutor der Antwort H.Eden
Ich vor ähnlichen problem. Ich löste es, ohne Verwendung von onload-handler.Ich war arbeiten auf AngularJs Projekt, so habe ich $Intervall und $ timeout. U können auch setTimeout und setInterval.Hier ist der code:
Alle 0,4 Sekunden halten Sie die überprüfung der Leiter der iFrame-Dokument. Ich somthing vorhanden ist.Laden wurde nicht gestoppt CORS, wie CORS Fehler zeigt leere Seite.
Wenn nichts vorhanden ist, nach 5 Sekunden gab es einige Fehler (Cors-Richtlinie) etc..
Zeigen entsprechende Meldung.Danke. Ich hoffe, es löst dein problem.
InformationsquelleAutor der Antwort viresh