2010-05-19 75 views
0

我的代碼中有一個奇怪的衝突。jQuery與body onload事件衝突

我有一個從身體的onload調用的函數:

var someGlobalVar=new SpecialType(); 
function OnBodyLoad() 
{ 
    someGlobalVar.Bind(); 
} 

但是當我包括jQuery的1.4.2在項目中,我得到一個錯誤someGlobalVar是不確定的。 爲什麼現在未定義全局變量,以及有什麼方法可以解決它?

回答

2

只是一個方面說明。

// DOM Ready 
$(document).ready(function() {}); 

// When the page has completely loaded 
<body onload="someFunction()"> 
3

除非你需要使用<body onload='OnBodyLoad()'>了,你可以改變thise使用jQuery的document.ready(並將其移動到外部文件!)是這樣的:

var someGlobalVar=new SpecialType(); 
$(OnBodyLoad); 
//or.. 
$(function() { 
    //other stuff.. 
    OnBodyLoad(); 
}); 
//or... 
$(document).ready(function() { 
    //other stuff.. 
    OnBodyLoad(); 
}); 
+3

這跟這個問題完全沒有關係.. – 2010-05-19 10:23:27

+1

@Sean - 如果'onload'處理程序被覆蓋或以任何方式改變,那麼在這個方法中附加一個處理程序會解決....這是遠遠超過jQuery干擾他的對象的可能性。 – 2010-05-19 10:40:25

+1

但爲什麼包括jQuery做這樣的事情?但我知道你在做什麼。 – 2010-05-19 10:42:45

2

也許jQuery的干擾SpecialType,因此調用new SpecialType();導致變量some​​GlobalVar是undefined

嘗試使用控制檯檢查是否有任何警告,並嘗試手動實例化SpecialType對象。這應該給你一些見解。

3

爲什麼不使用jQuery的加載事件?

$(window).load(function() { 
     functiontoexecute(); 
}); 

它很簡單,而且很容易。