今天在做前台頁面的時候,應用了兩個網上找到的JS效果,其中一個效果不起作用,FF下也沒有報錯,運用排除法發現是window.onload = function(){...}重復造成沖突,Google了一下,遇到這個問題的人還不少,通過查找資料和自己的實踐驗證,提供思路如下:
比如在一個頁面中有兩個JavaScript 分別都用到了window.onload
一個是:window.onload=function(a){...},另一個是:window.onload=function(b){...}這樣就造成了一個JavaScript 運行不了(一般是前一個)。
寫成這樣就可以了
window.onload=function(){function(a);function(b);}
也就是集中window.onload一次。
還有一種方法,舉個例子
<script type="text/javascript">
function $(obj){return document.getElementById(obj);}
window.onload=function(){
alert("加載完成");
onload2();
onload3();
}
function onload2(){
$("aa").onclick=function dd(){alert("haha")};
}
function onload3(){
alert("加載完成");
}</script>
<button id="aa">試試</button>
PS:window.onload = function(){}的作用?
這是匿名函數的寫法,就相當於window得onload事件調用了一個方法,但是這個方法是匿名的(因為沒有其他地方會調用,所以沒必要給一個名字)
如果要以常規的寫法,就是定義一個函數比如bbb();
function bbb()
{ aaa();}
再window.onload = bbb();
這樣比較冗長
見過書上有這樣寫個函數:
function addLoadEvent(func){
var oldonload=window.onload;
if(typeof window.onload!='function'){
window.onload=func;
}else{
window.onload=function(){
oldonload();
func();
}
}
}
添加要加載執行的事件:
addLoadEvent(aaa);
addLoadEvent(bbb);