window.attachEvent window.onload

<html>
<script>
window.attachEvent("onload",function(){alert('attach1')})
window.attachEvent("onload",function(){alert('attach2')})
</script>
<script>function window.onload(){alert('window.onload')}</script>
<script> alert('normal.1') </script>
<script defer> alert('defer1')</script>
<script defer> alert('defer2')</script>
<script> alert('normal.2') </script>

<SCRIPT event=onload for=window language=JavaScript>
alert('eventfor...')
</SCRIPT>

<body οnlοad="javascript:alert('body οnlοad=...')">

</body>
</html>

<script>alert('the last one')</script>


<script>window.οnlοad=function(){alert('window.οnlοad=')}</script>
首先看下attachEvent这个函数
JavaScript执行多个处理过程的方法
以前写 JavaScript 脚本时,事件都是采用object.event = handler;的方式初始化。这种方式对于 Internet Explorer、Mozilla/Firefox 和 Opera 来说很通用。但是有一个问题就是,这种方式只能一个事件对应一个事件处理过程。如果希望一个事件可以依次执行多个处理过程就不好用了。

但是 Internet Explorer 从 5.0 开始提供了一个 attachEvent 方法,使用这个方法,就可以给一个事件指派多个处理过程了。attachEvent 对于目前的 Opera 也适用。但是问题是 Mozilla/Firefox 并不支持这个方法。但是它支持另一个 addEventListener 方法,这个方法跟 attachEvent 差不多,也是用来给一个事件指派多个处理过程的。但是它们指派的事件有些区别,在 attachEvent 方法中,事件是以 “on” 开头的,而在 addEventListener 中,事件没有开头的 “on”,另外 addEventListener 还有第三个参数,一般这个参数指定为 false 就可以了。
然后看下
<SCRIPT event=onload for=window language=JavaScript>
alert('eventfor...')
</SCRIPT>
这个(以下简称第1种),这个应该和<script>window.οnlοad=function(){alert('window.οnlοad=')}</script>(以下简称第2种)、<body onload>(以下简称第3种)这三个是一致的,只是那个在代码中把onload方法重写了下,所以只弹出eventfor,如果我们把第一种方法干掉,那么就会弹出第三种的结果了也就是说如果有了第1种的情况下,并且也包含第2种或第三种的情况下,第一种会被覆盖掉
还有两个defer的执行顺序,和两个attachEvent之间的顺序
我想这个应该是遇到了这两个东西就压入栈中,应该是这种实现方式,所以后写的会先执行,并且可以处理多个。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值