Документ не связан напрямую с родительским документом.Вам нужна ссылка на window
, чтобы получить parent
.
Свойство DOM Level 2 Views document.defaultView
даст вам window
в большинстве современныхвеб-браузеры, но в IE вы должны вместо этого использовать нестандартные document.parentWindow
.(Некоторые старые или более неясные браузеры не поддерживают ни одно из этих свойств, в этом случае вы застряли.)
Это даст вам window
родительского документа.Если вы хотите получить <iframe>
, в котором хранится ваш документ, вам нужно будет выполнить итерацию по всем элементам iframe на странице и проверить, является ли содержащийся вами документ самим.
Опять же, метод для получения изЭлемент iframe, возвращаемый потомку, безвозмездно отличается в IE (iframe.contentWindow
дает вам window
) от стандарта DOM и всех остальных (iframe.contentDocument
дает вам document
).
Итак, что-тонапример:
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) {}
}
}
(try...
- это предотвращение сбоя цикла при сбое доступа к документу из-за другого iframe, находящегося в другом домене, что вызывает ошибку политики того же источника.)