绑定window的onload事件不执行
今天碰到一个奇怪的问题,在一个外部的js文件中给页面绑定了onload事件,在FF下能正确执行,IE6下却没有执行。最开始以为是绑定事件写的有问题,后来排除,经过多方调试,依然没有找到问题所在。最后还是香烟给我灵感,突然想到会不会是页面是不是已经页面load完了才执行绑定onload的事件?赶紧用测试一把,把window的onload换成document.body的click,点击页面后成功执行了。基本可以肯定是页面load完了才进行绑定操作的。由于是在页面加载的js中用动态加载的方式加载了另外一个js,在另外一个js中执行的绑定事件,也就是说这样操作在ie6下可能会造成问题。现在知道问题所在,那解决问题办法就是先用document.readyState(complete表示加载完成)查看页面是否已经load完成,如果已经完成就可以直接执行,否则就绑定onload事件。
兼容主流的浏览量的绑定事件通用方法,
function addEvent(obj, event, callback) { if (obj.addEventListener) { obj.addEventListener(event, callback, false); } else { obj.attachEvent("on" + event, callback); } }
当然也可以用document.readyState来达到onload的效果,示例如下:
(function(){ if (document.readyState && document.readyState == 'complete') { // doing } else { setTimeout(arguments.callee, 10); } })();
欢迎转载,转载请注明文章出处,谢谢!