您的位置:首页 > Web前端 > JavaScript

js中window.onload时间不能保存多个函数引用的解决办法

2015-01-15 17:05 681 查看
最近开始学做一个完整的前端项目,于是遇到了一个问题——由于是使用外部引用js文件,所以当需要在多个js文件中使用window.onload的事件时,会发现所写的函数无法实现,于是上网查书搜索相关解决办法,现在,个人总结以下3个方法(以下方法没有考虑浏览器的兼容性):

1. 这个办法比较笨,就是将所需要实现的函数都放在一个js文件中,所以不推荐使用。

window.onload = function() {
function1();
function2();
};


2. 使用“加入队列”的方法,代码如下:

<script type="text/javascript">
function addLoadEvent(func) {
var oldonload = window.onload;
/*如果onload事件不是一个funtion,即还未绑定事件*/
if(typeof window.onload != "function") {
window.onload = func;
}
/*如果是一个function,即已经绑定了事件*/
else {
window.onload = function() {
oldonload();            //把已经添加的函数加到onload中
func();                 //把新的函数加到onload中去
}
}
}
</script>

addLoadEvent(function1);
addLoadEvent(function2);


3. 使用jQuery。jQuery中提供了一种方法:$(document).ready()方法,该方法不会像window.onload那样,每次调用这个方法都会在现有的行为上追加新的行为,这些行为函数会根据注册的顺序依次执行,而不会使前面的行为被后面的行为覆盖。

function1() {
alert("one");
}
function2() {
alert("two");
}
$(document).ready(function() {
function1();
})
$(document).ready(function() {
function2();
})
但是,window.onload方法与$(document).ready()方法还是有区别的,最大的区别就是:window.onlad方法是在网页中所有的元素完全加载到浏览器后才执行,即javascript此时才可以访问网页的任何元素。而通过$(document).ready()方法注册的事件处理程序,在DOM完全就绪时就可以被调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息