HTML содержание iFrame - PullRequest
       2

HTML содержание iFrame

1 голос
/ 16 ноября 2011

Когда я получаю доступ к iframe с помощью a = window.frames ["iframe"], он говорит, что a является DOMWindow.
Но когда я пытаюсь получить доступ к документу, он говорит неопределенный, но когда я использую top, он обращается ксам.Это похоже на то, что iframe имеет себя как свойство.
Когда я обращаюсь к нему через document.getElementById ("iframe"), он идентифицирует себя как HTMLIFrame, но проблема все еще существует, это действительно странно, и мне нужна помощь.

Я пробовал:

document.getElementById("iframe").getDocument
document.getElementById("iframe").getDocument()
document.getElementById("iframe").html.body
document.getElementById("iframe").body
document.getElementById("iframe").document.getElementById("btag")

и многие другие комбинации.

Я серьезно не знаю, почему это так.

Спасибо.

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Вам необходимо получить доступ к contentWindow или contentDocument в зависимости от браузера.

Я провел небольшое тестирование, и кажется, что .document не работает (я в Chrome), это может быть лучшим решением:

http://jsfiddle.net/sTkVR/4/

document.frames ['frmID'] возвращает эквивалент как contentWindow или contentDocument, поэтому он говорит DOMWindow

0 голосов
/ 17 ноября 2011

Свойство window.frames на самом деле является циклической ссылкой на само окно.

window.frames === window
window.frames === window.self

DOMWindow является структурой, подобной массиву, в которой оно имеет свойство length и свойства цифровых клавиш..

Свойство window.frames существует по единственной причине предоставления доступа к кадрам по их числовым индексам, таким как window.frames[0] или просто frames[0].Конечно, вы можете получить доступ к данному кадру как window[0], но это выглядит не совсем корректно.

Элементы этого псевдо-массива (к которому обращаются как frames[index]) являются экземплярами DOMWindow (в случае, еслииз iframes, они указывают на iframe.contentWindow), и вы можете получить доступ к их свойствам document, если они имеют общий источник с текущим окном (то есть те же протоколы, домены и порты).

Если вы называете фреймили iframe (с атрибутом id), они (по крайней мере, в браузерах на основе WebKit) отображаются на свойства окна своего владельца.В случае iframe свойство указывает на элемент <iframe>, а не на его свойство contentWindow.

// <iframe name="a">
frames['a'] === window['a'] === document.getElementById('a')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...