Свойство 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')