Динамически создавать iframe и присоединять к нему событие onload
Я создал динамическую структуру iframe и добавил к ней атрибут src. Затем я добавил этот iframe в тело страницы. Знаю, что хочу привязать событие onload к iframe для чтения содержимого iframe. Может кто-нибудь предложить, как я это делаю.
frame = document.createElement('iframe');
frame.setAttribute('src','http://myurl.com');
body.appendChild(frame);
frame.onload = function(){
alert('hi'); // here i want to read the content in the frame.
}
Ответы
Ответ 1
В некоторых браузерах есть событие onload для iframe, сначала вы должны попытаться подключить его перед установкой атрибута iframe src.
Я бы вообще не использовал его, поскольку в некоторых браузерах он может не срабатывать при определенных условиях (например, цель была в кеше в IE).
Пользователь может установить таймер, чтобы проверить, завершено ли полнотекстовое содержимое contentWindow
var inter = window.setInterval(function() {
if (frame.contentWindow.document.readyState === "complete") {
window.clearInterval(inter);
// grab the content of the iframe here
}
}, 100);
Ответ 2
Я просто попробовал это, и он работал в Chrome:
var iframe = document.createElement('iframe');
// append iframe to DOM however you like then:
iframe.contentWindow.parent.location.href // properly gives parent window href.
W3school говорит, что contentWindow
поддерживается во всех основных браузерах.
Ответ 3
Я сомневаюсь, что вы можете прикрепить событие onload к iframe. Он не будет работать во всех браузерах. С другой стороны, вы можете проверить, был ли iframe загружен:
window.onload=function()
{
var iframe=document.getElementById('myframe');
if(iframe)
alert('The iframe has just been loaded.');
}
Или используйте AJAX для загрузки содержимого в вашем контейнере. С помощью AJAX вы можете установить правильное событие завершения загрузки.