Я пытаюсь найти лучший способ доступа к <iframe>
элементам window
и document
свойств родительской страницы. <iframe>
может быть создан с помощью JavaScript или доступен через ссылку, хранящуюся в свойстве объекта или переменной, поэтому, если я правильно понимаю, это исключает использование document.frames
.
Я видел, как это делалось несколькими способами, но я не уверен насчет лучшего подхода. С учетом <iframe>
, созданного таким образом:
var iframe = document.createElement('iframe');
document.getElementsByTagName('body')[0].appendChild(iframe);
В настоящее время я использую это для доступа к document
, и похоже, что он работает нормально во всех основных браузерах:
var doc = iframe.contentWindow || iframe.contentDocument;
if (doc.document) {
doc = doc.document;
}
Я также вижу этот подход:
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();
Это смущает меня, так как кажется, что если определено iframe.contentDocument.document
, вы в конечном итоге попытаетесь получить доступ к iframe.contentDocument.document.document
.
Также есть это:
var frame_ref = document.getElementsByTagName('iframe')[0];
var iframe_doc = frame_ref.contentWindow ? frame_ref.contentWindow.document :
frame_ref.contentDocument;
В конце концов, мне кажется, я не совсем понимаю, какие свойства содержат какие свойства, contentDocument
эквивалентно document
или есть такое свойство, как contentDocument.document
и т. Д.
Может ли кто-нибудь указать мне точную / своевременную ссылку на эти свойства или кратко рассказать о том, как эффективно получить доступ к свойствам <iframe>
window
и document
кросс-браузерным способом (без использование jQuery или других библиотек)?
Спасибо за любую помощь!