js中window.onload时间不能保存多个函数引用的解决办法
2015-01-15 17:05
681 查看
最近开始学做一个完整的前端项目,于是遇到了一个问题——由于是使用外部引用js文件,所以当需要在多个js文件中使用window.onload的事件时,会发现所写的函数无法实现,于是上网查书搜索相关解决办法,现在,个人总结以下3个方法(以下方法没有考虑浏览器的兼容性):
1. 这个办法比较笨,就是将所需要实现的函数都放在一个js文件中,所以不推荐使用。
2. 使用“加入队列”的方法,代码如下:
3. 使用jQuery。jQuery中提供了一种方法:$(document).ready()方法,该方法不会像window.onload那样,每次调用这个方法都会在现有的行为上追加新的行为,这些行为函数会根据注册的顺序依次执行,而不会使前面的行为被后面的行为覆盖。
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完全就绪时就可以被调用。
相关文章推荐
- JS中setInterval、setTimeout不能传递带参数的函数的解决办法
- JS事件函数不能传参数的解决办法。
- JS中setInterval、setTimeout不能传递带参数的函数的解决办法
- JS中setInterval、setTimeout不能传递带参数的函数的解决办法
- 火狐中js函数不能识别非全字母参数值的解决办法
- JS中setInterval、setTimeout不能传递带参数的函数的解决办法
- jsp不能引用js,cs等解决办法
- aspx页面运行纯js脚本的时间控件不能显示控件的解决办法
- JS中setInterval、setTimeout不能传递带参数的函数的解决办法
- 写oracle行级触发器时,不能操作本表,报"表 *** 发生了变化,触发器/函数不能读"的错误的解决办法
- 保存的js无法执行的解决办法[原创]_基础知识_脚本之家
- eclipse不能保存js文件解决方法
- PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
- defer属性 指示JS执行时间 Internet Explorer无法打开Internet站点......已终止操作 原由 解决办法
- 解决JS:window.close()在Firefox下的不能关闭的问题
- 关于JS客户端对服务器控件赋值,Post后不能保留值的解决办法
- Hibernate Annotation保存Date时无时间的解决办法
- PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
- IE 不能运行JS的解决办法
- GetConsoleWindow ()函数找不到的解决办法