Erkennen von DOM-Bereit-Zustand In einem iFrame (jQuery)
Ich habe ein Skript ausgeführt wird, in einem Dokument, das möglicherweise oder möglicherweise nicht geschachtelt werden, in einem iframe. Ich habe aussortiert, die das Problem der Erkennung der verschachtelten, aber ich kann nicht herausfinden, wie zu erkennen der Zustand des DOM, wenn es ist ein iframe.
Hier ist, was ich bereits:
if (window.self !== window.top) {
//is nested
//DOM ready test here
//execute code here
} else {
//is not nested
$(document).ready(function() {
//execute code here
});
}
Habe ich schon gelesen dieser Beitrag, aber ich sehe nicht die Antwort auf meine spezifische Frage. Ich kann Missverständnisse die Lösungen, die dort, so fühlen sich frei, mich zu korrigieren.
BEARBEITEN:
Dies scheint eine Fancybox Problem. Dieser code:
alert(document.getElementById('username').className);
document.getElementById('username').focus();
Sehe ich eine Warnung mit dem richtigen Wert, aber das form-element nicht den Fokus erhalten. Das sagt mir, dass es nicht ein Problem mit der Erkennung der DOM fertig ist-Zustand. Das original-Skript habe ich versucht zu nutzen, war dies:
$(document).ready(function() {
$('input.focus:last').focus();
});
EDIT 2/LÖSUNG:
Ich musste greifen, um eine Fancybox spezifische Lösung, denn es scheint eine Fancybox Problem. Fügte ich diese Zeile, um die Konfiguration für diese Fancybox iframed Formen:
'onComplete':function(){$('input.focus:last').focus();}
$(document).ready(function() funktioniert nicht in meinem iframe. Diese spezifische iframe dynamisch generiert Fancybox. Ich möchte eine Lösung, die nicht spezifisch für Fancybox obwohl.
InformationsquelleAutor Sonny | 2010-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ein SKRIPT-tag am Ende des iframe-BODY-tag.
Dann fügen Sie code hinzu, der ausgeführt wird, wenn der iframe-body geladen wird.
Können Sie entweder eine lokale JS-code des iframe, oder rufen Sie ein Objekt in der Eltern wie:
Meiner Erfahrung, die onload-Ereignis im IE ist nicht zuverlässig.
ich.e: es kann nicht warten, um das JS innerhalb des iframe geladen werden, bevor Sie abfeuern.
In das Skript-tag über sind Sie einfach nur der Befehl, um etwas zu starten. Wenn Sie nur ein alert('irgendwas'); was passiert? Die Fancybox (ich kenne es nicht) ist wohl dabei, Ihre Sachen auch, aber die Warnung sollte pop-up. Sie JS-Datei im head der Datei, die Sie laden im iframe.
Ihre Anregungen führte mich zu der Antwort, also bin ich-Kennzeichnung Euch die Lösung.
InformationsquelleAutor Mic