2010-05-19 47 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(); 
}); 

它很简单,而且很容易。