我的代码中有一个奇怪的冲突。jQuery与body onload事件冲突
我有一个从身体的onload调用的函数:
var someGlobalVar=new SpecialType();
function OnBodyLoad()
{
someGlobalVar.Bind();
}
但是当我包括jQuery的1.4.2在项目中,我得到一个错误someGlobalVar是不确定的。 为什么现在未定义全局变量,以及有什么方法可以解决它?
我的代码中有一个奇怪的冲突。jQuery与body onload事件冲突
我有一个从身体的onload调用的函数:
var someGlobalVar=new SpecialType();
function OnBodyLoad()
{
someGlobalVar.Bind();
}
但是当我包括jQuery的1.4.2在项目中,我得到一个错误someGlobalVar是不确定的。 为什么现在未定义全局变量,以及有什么方法可以解决它?
只是一个方面说明。
// DOM Ready
$(document).ready(function() {});
// When the page has completely loaded
<body onload="someFunction()">
除非你需要使用<body onload='OnBodyLoad()'>
了,你可以改变thise使用jQuery的document.ready
(并将其移动到外部文件!)是这样的:
var someGlobalVar=new SpecialType();
$(OnBodyLoad);
//or..
$(function() {
//other stuff..
OnBodyLoad();
});
//or...
$(document).ready(function() {
//other stuff..
OnBodyLoad();
});
也许jQuery的干扰SpecialType
,因此调用new SpecialType();
导致变量someGlobalVar是undefined
。
尝试使用控制台检查是否有任何警告,并尝试手动实例化SpecialType对象。这应该给你一些见解。
为什么不使用jQuery的加载事件?
$(window).load(function() {
functiontoexecute();
});
它很简单,而且很容易。
这跟这个问题完全没有关系.. – 2010-05-19 10:23:27
@Sean - 如果'onload'处理程序被覆盖或以任何方式改变,那么在这个方法中附加一个处理程序会解决....这是远远超过jQuery干扰他的对象的可能性。 – 2010-05-19 10:40:25
但为什么包括jQuery做这样的事情?但我知道你在做什么。 – 2010-05-19 10:42:45