Ich versuche herauszufinden, der beste Weg zum Zugriff auf Element window
und document
Eigenschaften von einer übergeordneten Seite. Die kann über JavaScript erstellt werden oder über eine Referenz zugegriffen werden, die in einer Objekteigenschaft oder einer Variablen gespeichert ist, so dass, wenn ich das richtig verstehe, die Verwendung von document.frames
ausgeschlossen ist.Was ist der prägnanteste browserübergreifende Weg, um auf ein <iframe> Elementfenster und Dokument zuzugreifen?
Ich habe gesehen, dass dies eine Reihe von Möglichkeiten, aber ich bin mir unsicher über die beste Vorgehensweise. Bei einer gegebenen auf diese Weise erstellt:
var iframe = document.createElement('iframe');
document.getElementsByTagName('body')[0].appendChild(iframe);
Ich bin derzeit diese mit auf die document
zuzugreifen, und es scheint, in den wichtigsten Browsern OK zu arbeiten:
var doc = iframe.contentWindow || iframe.contentDocument;
if (doc.document) {
doc = doc.document;
}
Ich habe auch diese sehen Ansatz:
var iframe = document.getElementById('my_iframe');
iframe = (iframe.contentWindow) ? iframe.contentWindow :
(iframe.contentDocument.document) ? iframe.contentDocument.document :
iframe.contentDocument;
iframe.document.open();
iframe.document.write('Hello World!');
iframe.document.close();
das hat mich verwirrt, da es das scheint, wenn iframe.contentDocument.document
definiert ist, wirst du am Ende versucht iframe.contentDocument.document.document
zugreifen .
Es gibt auch diese:
var frame_ref = document.getElementsByTagName('iframe')[0];
var iframe_doc = frame_ref.contentWindow ? frame_ref.contentWindow.document :
frame_ref.contentDocument;
Am Ende, ich denke, ich bin verwirrt darüber, welche Eigenschaften halten, die Eigenschaften, ob contentDocument
-document
äquivalent ist, oder ob es eine solche Eigenschaft als contentDocument.document
, etc .
mich auf eine genaue/rechtzeitige Bezug auf diese Eigenschaften, oder eine schnelle Einweisung geben Punkt auf jemand, wie effizient in einem Cross-Browser-Weg eines ‚s zugreifen window
und document
Eigenschaften (Kann ohne die Verwendung von jQuery o r andere Bibliotheken)?
Danke für jede Hilfe!
Danke, kennebec! Also habe ich ein paar Tests gemacht, um euer Feedback zu berücksichtigen. Es sieht tatsächlich wie IE (mindestens IE 7) ist der Nachzügler auf contentDocument; Chrome scheint das zu unterstützen. Würde 'var win = iframe.contentWindow; var doc = iframe.contentDocument || iframe.contentWindow.document; 'ein ausreichender und stabiler Cross-Browser (zurück zu IE 6) nach den' window' und 'document' Objekten suchen? – Bungle
Die One-Line-Lösung, die ich gepostet habe, berücksichtigt all diese Überlegungen :) –
@EmanueleDelGrande: Aber es hat es nicht erklärt. – DanMan