JavaScript之window.onload = somefunction 笔记
2015-12-24 15:41
609 查看
转载自http://blog.sina.com.cn/s/blog_70c2f3780100y2pt.html
今天在学习jQuery(《jQuery基础教程(第2版)》——Jonathan Chaffer & Karl Swedberg)的时候,本着结构与脚本分离(笔者我根据CSS里结构与形式的分离掰出来的)这一思想,做了如下笔记。
1.写法
假设我们已经定义了如下函数:
function doStuff() {
......
}
那么,我们既可以在HTML标记中指定该函数:
<body onload="doStuff();">(方式一)
也可以在JavaScript代码中指定该函数:
window.onload = doStuff;(方式二)
注意,上面的doStuff函数后面没有括号“()”,只使用了函数名。
(在测试时,如果在方式二中的doStuff后面加上了(),页面加载后并没有调用函数。)
这两种方式都会导致在页面加载完成后执行这个函数。但第2种方式的优点在于,它能使行为更清晰地从标记中分离出来。
2.思考
在只有一个函数的情况下,这样做没有什么问题。但是,假设我们又定义了第二个函数:
function doAnotherStuff() {
......
}
我们也可以将它指定为基于页面的加载来运行:
window.onload = doAnotherStuff();
然而,这次指定的函数,会取代刚才指定的第一个函数。因为.onload属性一次只能保存对一个函数的引用,所以不能在现有的行为基础上再增加新行为。
在这种情况下,通过$(document).ready()机制能够得到很好的处理。每次调用这个方法——$(document).ready()都会向内部的行为队列中添加一个新函数,当页面加载完成后,所有函数都将得到执行。而且,这些函数会按照注册它们的顺序依次执行。(虽然通过window.onload也可注册多个函数,但却不能保证按顺序执行)
公平地讲,jQuery并不是解决这个问题的唯一方法。我们可以编写一个 JavaScript 函数,用它构造一个调用现有的onload事件处理程序的新函数,然后再调用一个传入的事件处理程序。
今天在学习jQuery(《jQuery基础教程(第2版)》——Jonathan Chaffer & Karl Swedberg)的时候,本着结构与脚本分离(笔者我根据CSS里结构与形式的分离掰出来的)这一思想,做了如下笔记。
1.写法
假设我们已经定义了如下函数:
function doStuff() {
......
}
那么,我们既可以在HTML标记中指定该函数:
<body onload="doStuff();">(方式一)
也可以在JavaScript代码中指定该函数:
window.onload = doStuff;(方式二)
注意,上面的doStuff函数后面没有括号“()”,只使用了函数名。
(在测试时,如果在方式二中的doStuff后面加上了(),页面加载后并没有调用函数。)
这两种方式都会导致在页面加载完成后执行这个函数。但第2种方式的优点在于,它能使行为更清晰地从标记中分离出来。
2.思考
在只有一个函数的情况下,这样做没有什么问题。但是,假设我们又定义了第二个函数:
function doAnotherStuff() {
......
}
我们也可以将它指定为基于页面的加载来运行:
window.onload = doAnotherStuff();
然而,这次指定的函数,会取代刚才指定的第一个函数。因为.onload属性一次只能保存对一个函数的引用,所以不能在现有的行为基础上再增加新行为。
在这种情况下,通过$(document).ready()机制能够得到很好的处理。每次调用这个方法——$(document).ready()都会向内部的行为队列中添加一个新函数,当页面加载完成后,所有函数都将得到执行。而且,这些函数会按照注册它们的顺序依次执行。(虽然通过window.onload也可注册多个函数,但却不能保证按顺序执行)
公平地讲,jQuery并不是解决这个问题的唯一方法。我们可以编写一个 JavaScript 函数,用它构造一个调用现有的onload事件处理程序的新函数,然后再调用一个传入的事件处理程序。
相关文章推荐
- CKEditor 实例
- JS控制iFrame切换加载不同网页内容
- IE 浏览器的js中文乱码
- 通过 iframe 调用 天气预报&jsonp
- js url 中文乱码
- 借助FileReader实现将文件编码为Base64后通过AJAX上传
- 深入理解javascript之设计模式
- ArcGIS API for Javascript热区图
- js获取url中参数的方法
- JavaScript包装对象使用介绍
- JavaScript的DOM操作
- js模块化开发
- JavaScript 函数式编程
- json数组,随便测试
- javascript标准对象与包装对象
- JavaScript调用COM接口说明
- 用NuGet安装NewtonSoft.json
- 跨域与跨域访问
- js框架为checkbox直接赋值的总结
- Javascript基于对象三大特征