jQuery与body onload事件冲突

jQuery与body onload事件冲突,jquery,html,javascript-events,Jquery,Html,Javascript Events,我的代码中有一个奇怪的冲突 我有一个从body onload调用的函数: var someGlobalVar=new SpecialType(); function OnBodyLoad() { someGlobalVar.Bind(); } 但是当我在我的项目中包括jQuery1.4.2时,我得到一个错误,someGlobalVar是未定义的。 为什么全局变量现在未定义,有什么方法可以修复它?除非您需要再使用,否则您可以将其更改为使用jQuery的文档。ready(并将其移动到外部文件

我的代码中有一个奇怪的冲突

我有一个从body onload调用的函数:

var someGlobalVar=new SpecialType(); 
function OnBodyLoad()
{
  someGlobalVar.Bind();
}
但是当我在我的项目中包括jQuery1.4.2时,我得到一个错误,someGlobalVar是未定义的。
为什么全局变量现在未定义,有什么方法可以修复它?

除非您需要再使用
,否则您可以将其更改为使用jQuery的
文档。ready
(并将其移动到外部文件!),如下所示:

var someGlobalVar=new SpecialType(); 
$(OnBodyLoad);
//or..
$(function() {
  //other stuff..
  OnBodyLoad();
});
//or...
$(document).ready(function() {
  //other stuff..
  OnBodyLoad();
});
只是旁注

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

// When the page has completely loaded
<body onload="someFunction()">
//DOM就绪
$(文档).ready(函数(){});
//当页面完全加载时

也许jQuery干扰了
SpecialType
,因此调用
newspecialType()
导致变量someGlobalVar
未定义


尝试使用控制台检查任何警告,并尝试手动实例化SpecialType对象。这会给你一些启示

为什么不使用jQuery的加载事件

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

这很简单,也很容易。

@Sean-如果
onload
处理程序被覆盖或以任何方式更改,那么在这个方法中附加处理程序将解决这个问题……这比jQuery干扰其对象的可能性要大得多。但是为什么包括jQuery会做这样的事情呢?但是我知道你在说什么。@Sean-这不是开箱即用的,但我怀疑海报只是添加了jQuery,可能是总体上造成了javascript错误,或者是OP实际运行了一些代码,问题还没有完成,这是更常见的情况。