javascript - 頁面引入的所有的js文件,每個js文件都有window.onload偶爾會某個js文件沒有執行
習慣沉默
習慣沉默 2017-06-26 10:55:06
0
5
864

1.在A頁面引入a.js和b.js;其中a.js和b.js都用了window.onload沒有問題;
但是我在B頁面也引入a.js和c. js,偶爾a.js就跟完全沒有執行一樣
但是我直接將a.js中的window.onload中的東西放入B頁面的c.js的onload中,又正確執行了,不曉得是怎麼回事? ?

習慣沉默
習慣沉默

全部回覆(5)
phpcn_u1582

window.onload只有一次,所以會出現多個js同時使用它而衝突的問題。
解決辦法

1.用jQuery使用ready()方法替换onload
2.在window.onload中一次加载所有js文件,例:window.onload=function(){function(a);function(b);} 
黄舟

我試了一下,window可以綁定多次,但是最後一次才會生效,你可以對照看下我下面的2個例子來理解你出現的情況。

    //方式1:
    window.onload=function () {
        console.log("1");
    }
    window.onload=function () {
        console.log("2");
    }
//    输出2
//    -------------------------------分割线
//    方式2:
    function fn1() {
        console.log("1");
    }
    function fn2() {
        console.log("2");
    }
    addEventLoad(fn1);
    addEventLoad(fn2);
    //输出1  2
    function addEventLoad(fn){
        var oldFn = window.onload;
        if(typeof window.onload != 'function'){
            window.onload = fn;
        }else{
            window.onload = function(){
                oldFn();
                fn();
            }
        }
    }
大家讲道理
  • 透過window.onload = function() { ... }方法設定的事件,後面的window.onload值會覆寫前面的,所以,只有最後一次生效。 (這個和調用a = 1; a = 2; a =3;是一個道理)

  • 如果需要對windowonload事件進行多次綁定,建議使用addEventListener

window.addEventListener('load', function() { ... }, false);
  • 注意,ID中使用attachEvent而非addEventListener

window.attachEvent('onload', function() { ... });
  • 另外注意,addEventListener中用的是'load',而attachEvent中用的是'onload'

世界只因有你

window.onload()方法只能綁定一次的,多次綁定只有最後一次生效

代言

window.onload只會呼叫最後一個的,之前的都會被覆掉。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!