J.H*_*rix 0 javascript iframe rendering onload internet-explorer-6
在IE 6中完全呈现页面之前,我遇到了一些运行JavaScript的问题(可能还有其他版本,但现在只测试IE6.Firefox似乎没问题).我可以通过这样调用js来解决window.onload这个问题:
window.onload = function(){doIt();}
Run Code Online (Sandbox Code Playgroud)
但是,我担心的是,我将覆盖可能已存在的任何其他内容window.onload.代码将用作库的一部分,因此我不能保证window.onload不会被其他人设置在其他地方.我宁愿将我的函数添加到这样的onload事件:
window.onload += function(){doIt1();}
window.onload += function(){doIt2();}
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,只会doit2()被召唤.有没有办法在页面完全呈现时注册事件处理程序?我的第二个想法是将我的代码放在一个循环检查中,以确保在运行之前我的所有对象都存在.但我担心这可能会锁定浏览器.
仅仅为了一些背景信息,我的代码隐藏/显示iFrames.我知道我可以使用iFrame的onload属性,但我需要在调用代码之前完全加载所有iFrame.
来自社区的任何想法?在此先感谢您的投入.
使用这个通用的addLoadEvent函数......
function addLoadEvent(func) {
if(typeof window.onload != 'function')
window.onload = func;
else {
var oldLoad = window.onload;
window.onload = function() {
if(oldLoad) oldLoad();
func();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这基本上排队了要执行的功能.它永远不会覆盖先前分配的处理程序.以下示例用法......
addLoadEvent(function() { alert("One!"); });
addLoadEvent(two);
function two() {
alert("Two!");
}
Run Code Online (Sandbox Code Playgroud)
我想提一下像jQuery这样的库会为你处理这样的已知问题.
| 归档时间: |
|
| 查看次数: |
1329 次 |
| 最近记录: |