我已经创建了一个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.
}
有些浏览器确实有iframe的onload事件,首先你应该在设置iframe的src属性之前尝试附加它。
我完全避免使用它,因为在某些浏览器中它可能不会在某些条件下触发(例如,目标在IE中的缓存中)。
您可以使用计时器来检查框架的contentWindow的readystate是否完整
var inter = window.setInterval(function() {
if (frame.contentWindow.document.readyState === "complete") {
window.clearInterval(inter);
// grab the content of the iframe here
}
}, 100);
有些浏览器确实有iframe的onload事件,首先你应该在设置iframe的src属性之前尝试附加它。
我完全避免使用它,因为在某些浏览器中它可能不会在某些条件下触发(例如,目标在IE中的缓存中)。
您可以使用计时器来检查框架的contentWindow的readystate是否完整
var inter = window.setInterval(function() {
if (frame.contentWindow.document.readyState === "complete") {
window.clearInterval(inter);
// grab the content of the iframe here
}
}, 100);
我刚试过这个,它在Chrome中有效:
var iframe = document.createElement('iframe');
// append iframe to DOM however you like then:
iframe.contentWindow.parent.location.href // properly gives parent window's href.
W3school说 contentWindow
在所有主流浏览器中都受支持。
我怀疑你可以将onload事件附加到iframe。它不适用于所有浏览器。另一方面,您可以通过以下方式检查iframe是否已加载:
window.onload=function()
{
var iframe=document.getElementById('myframe');
if(iframe)
alert('The iframe has just been loaded.');
}
或者使用AJAX加载容器中的内容。使用AJAX,您可以设置适当的加载完成事件。