使用javascript的crossbrower窗口onload方法

时间:2010-10-28 21:06:36

标签: dom javascript-events cross-browser

使用Javascript,我想知道在加载页面的其余部分后,将代码加载到页面(没有jQuery)的当前最佳方法是什么。所以像window.onload ......

我正在考虑几个选项,但它们似乎都过时了,并且不完全跨浏览器友好。

这看起来最好吗?它确实有效,我是从online tools得到的,但我认为它来自Scott Andrews

 function addEvent(obj, evType, fn) { 
 if (obj.addEventListener){ 
   obj.addEventListener(evType, fn, false); 
   return true; 
 } else if (obj.attachEvent){ 
   var r = obj.attachEvent("on"+evType, fn); 
   return r; 
 } else { 
   return false; 
 } 
}

function init () {
// do something
}

addEvent(window, 'load', init); 

即使它有效并且通过我的所有测试并且看起来非常灵活,我对这种方法有点担心,因为

1)我不完全理解

2)看起来很旧,scott andrews页面是从2001年开始的!

3)Opera技术支持不喜欢它,请参阅online tools上的“歌剧之声”

这是最好的方法吗?

1 个答案:

答案 0 :(得分:1)

来自The Javascript Source

/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Caleb Duke | http://www.askapache.com/ */

//------------------------------------
// heavily based on the Quirksmode addEvent contest winner, John Resig
// addEvent
function addEvent(obj,type,fn){
    if(obj.addEventListener) obj.addEventListener(type,fn,false);
    else if(obj.attachEvent){
        obj["e"+type+fn]=fn;
        obj[type+fn]=function(){obj["e"+type+fn](window.event);}
        obj.attachEvent("on"+type,obj[type+fn]);
    }
}

//------------------------------------
// removeEvent
function removeEvent(obj,type,fn){
  if(obj.removeEventListener) obj.removeEventListener(type,fn,false);
  else if(obj.detachEvent){
    obj.detachEvent("on"+type,obj[type+fn]);
    obj[type+fn]=null;
    obj["e"+type+fn]=null;
  }
}