很老的东西,记下来下,万一以后要用到
一般来说,我们判断 iframe 是否加载完成其实与 判断 JavaScript 文件是否加载完成 采用的方法很类似:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
var iframe = document.createElement(
"iframe"
);
if
(!
/*@cc_on!@*/
0) {
//if not IE
iframe.onload = function(){
alert(
"Local iframe is now loaded."
);
};
}
else
{
iframe.onreadystatechange = function(){
if
(iframe.readyState ==
"complete"
){
alert(
"Local iframe is now loaded."
);
}
};
}
document.body.appendChild(iframe);
|
最近, Nicholas C. Zakas 文章《Iframes, onload, and document.domain》的评论中 Christopher 提供了一个新的判断方法(很完美):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
var iframe = document.createElement(
"iframe"
);
if
(iframe.attachEvent){
iframe.attachEvent(
"onload"
, function(){
alert(
"Local iframe is now loaded."
);
});
}
else
{
iframe.onload = function(){
alert(
"Local iframe is now loaded."
);
};
}
document.body.appendChild(iframe);
|
几点补充说明:
- IE 支持 iframe 的 onload 事件,不过是隐形的,需要通过 attachEvent 来注册。
- 第二种方法比第一种方法更完美,因为 readystatechange 事件相对于 load 事件有一些潜在的问题。