Dokument nie jest bezpośrednio powiązany z jego dokumentem nadrzędnym. Aby odebrać parent
, konieczne jest podanie odniesienia do numeru window
.
DOM Level 2 Odwiedzin nieruchomość document.defaultView
daje window
w większości nowoczesnych przeglądarek internetowych, ale w IE trzeba użyć niestandardowych document.parentWindow
zamiast. (Niektóre starsze lub bardziej niezrozumiałe przeglądarki nie implementują żadnej z tych właściwości, w takim przypadku utkniesz.)
To da ci window
dokumentu nadrzędnego. Jeśli chcesz uzyskać numer przechowujący dokument, będziesz musiał przejrzeć wszystkie elementy iframe na stronie i sprawdzić, czy dokument jest sam.
Ponownie, sposób dostać się z elementu iframe z powrotem do dziecka jest nieodpłatnie różne w IE (iframe.contentWindow
daje window
) vs standardu DOM i inni (iframe.contentDocument
daje document
).
Tak, coś takiego: (. Na try...
jest uniknięcie awarii pętli się, kiedy dostęp dokument nie ze względu na inny iframe będąc w innej domenie, powodując tym samym błąd Polityka Origin)
function getFrameForDocument(document) {
var w= document.defaultView || document.parentWindow;
var frames= w.parent.document.getElementsByTagName('iframe');
for (var i= frames.length; i-->0;) {
var frame= frames[i];
try {
var d= frame.contentDocument || frame.contentWindow.document;
if (d===document)
return frame;
} catch(e) {}
}
}
Co masz na myśli przez „odniesienia do obiektu dokumentu”? Czym jest kontener IFRAME? Proszę wyjaśnić i może pokazać kod –
Mam referencję do obiektu skryptowego HTMLDocument (w środowisku skryptowym Firefox) i bez odniesienia do jego ramki IFrame. – Melllvar