2010-12-28 18 views
31

Ich habe ein Widget, das einen iframe enthält. Der Benutzer kann die URL dieses Iframes konfigurieren, aber wenn die URL nicht geladen werden konnte (sie ist nicht vorhanden oder der Benutzer hat keinen Zugriff auf das Internet), sollte der Iframe auf eine Standard-Offlineseite umgeschaltet werden.Ermitteln, ob der Iframe-Inhalt erfolgreich geladen wurde

Die Frage ist, wie kann ich feststellen, ob der Iframe geladen werden konnte oder nicht? Ich habe versucht, das 'load'-Ereignis zu abonnieren, und wenn dieses Ereignis nach einiger Zeit nicht ausgelöst wird, failover, aber das funktioniert nur in Firefox, da IE und Chrome das' load '-Ereignis auslöst, wenn die "Seite nicht gefunden" ist angezeigt.

+0

hey skinssay, haben Sie keine Lösung gefunden, ohne einen Proxy zu verwenden? – brillout

+1

Nein, habe ich nicht. Ich habe eine tiefere Forschung gemacht und ich denke, es ist nicht möglich :( – skinssay

+0

nach http://stackoverflow.com/questions/3552355/prevent-iframe-this-webpage-is-not-available-error-from-displaying-on -website die onerror-eigenschaft wird von webkit unterstützt, aber ich hatte kein glück, damit es funktioniert. hast du? – brillout

Antwort

7

Heutzutage haben die Browser eine Reihe von Sicherheitseinschränkungen, die Sie vom Inhalt eines Iframes fernhalten (wenn es sich nicht um Ihre Domain handelt).

Wenn Sie diese Funktionalität wirklich benötigen, müssen Sie eine Serverseite erstellen, die als Proxy arbeiten muss, die die URL als Parameter empfängt, testen, ob es eine gültige URL ist, und den Fehler umleitet oder anzeigt Seite.

0

Wenn Sie Kontrolle über den Inhalt des Iframe haben (zB können Sie der Seite beliebigen Code hinzufügen), können Sie versuchen, eine spezielle Funktion in jedem von ihnen zu implementieren, dann rufen Sie auf Ihrer Seite diese Funktion auf und fangen ein Fehler (über window.onerror Handler), wenn die über eval aufgerufene Funktion fehlschlägt, weil die Seite nicht geladen wurde.

Hier ist Beispielcode: http://www.tek-tips.com/viewthread.cfm?qid=1114265&page=420

+1

seit er den tag "cross-domain" gesetzt habe, würde ich mir vorstellen, dass er nicht beide seiten kontrolliert. –

+0

Ja, ich habe keine Kontrolle über den Inhalt. Die Idee ist, dass der Benutzer den src des iframes mit der von ihm gewünschten URL konfigurieren kann. – skinssay

+0

eval ist böse. iframe mit eval ist satanisch.