使用onload事件往往在body标签上注册,使用:οnlοad=function_name();的方式 不过这种方式只能在IE上使用,若是再FF上,就失去了效果,导致页面会有错误
解决这个问题可使用以下方法
- if(window.addEventListener)
- {
- window.addEventListener('load',init);//FF
- }
- else if(window.attachEvent)
- {
- window.attachEvent('onload',init);//IE
- }
- function init()
- {
- //具体操作
- }
这样就分别在不同的浏览器上调用不同的事件注册方法,注册onload事件。
attachEvent和addEventListener不仅可有window对象来调用(这时就是想window对象注册某个事件),也可以由其他对象调用
,如向按钮注册onclick事件,如下:
- var btn_obj= document.getElementById("btn1");
- btn_obj.attachEvent("onclick",method1);
- btn_obj.attachEvent("onclick",method2);
- btn_obj.attachEvent("onclick",method3);
- //执行顺序为method3->method2->method1
- //如果是FF,并不支持该方法
- addEventListener var btn_obj= document.getElementById("btn1");
- btn_obj.addEventListener("click",method1);
- btn_obj.addEventListener("click",method2);
- btn_obj.addEventListener("click",method3);
- //执行顺序为method1->method2->method3
- //当然你也可以直接对某个可视化组件设置某种属性的值,仍用button为例
- document.getElementById("btn").onclick = method1;
- document.getElementById("btn").onclick = method2;
- document.getElementById("btn").onclick = method3;
- //如果这样写,那么将会只有medhot3被执行
- //这就是这种方法和上面注册的方式之间的区别,
- //不过一般不会有这么多onclick发生,哈哈