2010-05-19 2 views
0

У меня странный конфликт в моем коде.jQuery конфликт с событием onload тела

У меня есть функция, которая вызывается из OnLoad тела:

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

Но когда я включаю JQuery 1.4.2 в моем проекте я получаю ошибку, что someGlobalVar не определена. Почему глобальная переменная undefined сейчас и какие способы ее исправить?

ответ

2

Просто побочное замечание.

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

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

Если вам не нужно использовать <body onload='OnBodyLoad()'> больше, вы можете изменить ДАННЫЕ использовать JQuery-х document.ready (и переместить его во внешний файл!), Как это:

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

Это не имеет никакого отношения к вопросу .. –

+1

@Sean - он делает, если обработчик 'onload' становится переопределенным или изменен каким-либо образом, прикрепление обработчика в этом методе разрешит это .... это * far * более вероятно, чем jQuery, мешающий его объекту. –

+1

Но почему бы включить jQuery в такое дело? Но я знаю, к чему ты клонишь. –

2

Возможно JQuery мешает SpecialType и поэтому вызов new SpecialType(); результатов в переменной someGlobalVar быть undefined.

Попробуйте использовать консоль для проверки любых предупреждений и попытайтесь создать экземпляр объекта SpecialType вручную. Это должно дать вам некоторое представление.

3

Почему вы не используете событие загрузки jQuery?

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

Это просто, и это легко.

Смежные вопросы