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

来源:互联网 发布:二层别墅网络覆盖方案 编辑:程序博客网 时间:2024/06/13 03:09

最近开始学做一个完整的前端项目,于是遇到了一个问题——由于是使用外部引用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完全就绪时就可以被调用。




0 0
原创粉丝点击