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中,又正確執行了,不曉得是怎麼回事? ?
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;是一個道理)
window.onload = function() { ... }
window.onload
a = 1; a = 2; a =3;
如果需要對window的onload事件進行多次綁定,建議使用addEventListener:
window
onload
addEventListener
window.addEventListener('load', function() { ... }, false);
注意,ID中使用attachEvent而非addEventListener:
attachEvent
window.attachEvent('onload', function() { ... });
另外注意,addEventListener中用的是'load',而attachEvent中用的是'onload'。
'load'
'onload'
window.onload()方法只能綁定一次的,多次綁定只有最後一次生效
window.onload只會呼叫最後一個的,之前的都會被覆掉。
window.onload只有一次,所以會出現多個js同時使用它而衝突的問題。
解決辦法
我試了一下,window可以綁定多次,但是最後一次才會生效,你可以對照看下我下面的2個例子來理解你出現的情況。
透過
window.onload = function() { ... }
方法設定的事件,後面的window.onload
值會覆寫前面的,所以,只有最後一次生效。 (這個和調用a = 1; a = 2; a =3;
是一個道理)如果需要對
window
的onload
事件進行多次綁定,建議使用addEventListener
:注意,ID中使用
attachEvent
而非addEventListener
:另外注意,
addEventListener
中用的是'load'
,而attachEvent
中用的是'onload'
。window.onload()方法只能綁定一次的,多次綁定只有最後一次生效
window.onload只會呼叫最後一個的,之前的都會被覆掉。