2010-04-13 4 views
1

Я разрабатываю сайт в javascript и jquery. Иногда, когда я обновляюсь, я получаю разные случайные ошибки в firebug. В чем дело?Что со случайными ошибками Javascript?

редактировать: Я получаю ошибки как переменная не определена, когда явно она и работает, и когда я обновить снова ушла ошибка ..

с помощью Firefox Firebug V3.5.5 В. 1.5.3, и я в основном работаю с jQuery 1.4.2

+1

Можете ли вы предоставить небольшой контекст, например пример кода и примеры ошибок ... Никто не сможет помочь иначе. – Kinlan

+0

Какие ошибки вы получаете и где? – animuson

+1

* много * больше информации необходимо! Подобно; Какую страницу пытается сделать? Какой js запущен? Каковы ошибки? Какую версию firebug/jquery/firefox вы используете? – Mathew

ответ

3

OK. Несмотря на то, что это более или менее невозможно дать разумное решение для такого общего вопроса, я просто добавить ценность моих 2 цента:

Одним из возможных источников „неопределенных переменных“ ошибок происходит от включая несколько сценариев, которые может или не всегда может загружаться и выполняться в том же порядке. Если вы определите переменную в одном скрипте (давайте назовем этот скрипт declare.js) и используем его в другом (скажем, use.js), а use.js выполняется до declare.js, тогда вы получите такую ​​ошибку. Если скрипты выполняются наоборот, все будет выглядеть нормально.

Если вас интересует эта тема, посмотрите на, например, Книга Стива Соудера Even faster web sites, опубликовано O'Reilly. Более конкретно, посмотрите главу о загрузке неблокирующего сценария.

+0

очень интересно, спасибо за ваш вклад. –

1

Наиболее распространенная причина в том, что вы пытаетесь выполнить Javascript до DOM загружается и, таким образом, прежде чем все элементы HTML будут доступны в дереве DOM, что в свою очередь может вызвать такие простые вызовы, как document.getElementById(id), а $(selector) jQuery может возвращать неопределенные элементы. То, что он иногда работает, - это чистое совпадение и вопрос времени.

Вы должны гарантировать, что любой код Javascript/JQuery, который, как предполагается, будет выполняться во время загрузки страницы и зависит от наличия элементов в дереве DOM, а также на самом деле получить выполнен после будет загружен DOM. В простом ванильным JS вы можете сделать так:

window.onload = function() { 
    document.getElementById(someId); 
} 

и в JQuery:

$(document).ready(function() { 
    $(someSelector); 
}); 
Смежные вопросы