JavaScript之window.onload = somefunction 笔记

       转载自http://blog.sina.com.cn/s/blog_70c2f3780100y2pt.html

        今天在学习jQuery(《jQuery基础教程(第2版)》——Jonathan Chaffer & Karl Swedberg)的时候,本着结构与脚本分离(笔者我根据CSS里结构与形式的分离掰出来的)这一思想,做了如下笔记。

 
1.写法
 
假设我们已经定义了如下函数:
function doStuff() {
......
}
 
那么,我们既可以在HTML标记中指定该函数:
<body οnlοad="doStuff();">(方式一)
 
也可以在JavaScript代码中指定该函数:
window.onload = doStuff;(方式二)
 
注意,上面的doStuff函数后面没有括号“()”,只使用了函数名。
 
(在测试时,如果在方式二中的doStuff后面加上了(),页面加载后并没有调用函数。)
 
这两种方式都会导致在页面加载完成后执行这个函数。但第2种方式的优点在于,它能使行为更清晰地从标记中分离出来。
 
2.思考
 
在只有一个函数的情况下,这样做没有什么问题。但是,假设我们又定义了第二个函数:
function doAnotherStuff() {
......
}
 
我们也可以将它指定为基于页面的加载来运行:
window.onload = doAnotherStuff();
 
然而,这次指定的函数,会取代刚才指定的第一个函数。因为.onload属性一次只能保存对一个函数的引用,所以不能在现有的行为基础上再增加新行为。
 
在这种情况下,通过$(document).ready()机制能够得到很好的处理。每次调用这个方法——$(document).ready()都会向内部的行为队列中添加一个新函数,当页面加载完成后,所有函数都将得到执行。而且,这些函数会按照注册它们的顺序依次执行。(虽然通过window.onload也可注册多个函数,但却不能保证按顺序执行)
 
公平地讲,jQuery并不是解决这个问题的唯一方法。我们可以编写一个 JavaScript 函数,用它构造一个调用现有的onload事件处理程序的新函数,然后再调用一个传入的事件处理程序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值