В Firebug $ == jQuery возвращает false, только иногда

Хорошо, у меня есть эта странная проблема в Firefox. Я набираю в консоли Firebug

$ == jQuery

Иногда он показывает true, а иногда false. Файл представляет собой просто пустой HTML-документ с одним тегом script, включая jQuery. Обновляю страницу, нажимаю "Выполнить" в консоли, и снова иногда возвращает true, иногда false.

В тех случаях, когда он возвращает false, $.toString() дает

function anonymous() {
    return window.console.notifyFirebug(arguments, "$", "firebugExecuteCommand");
}

Теперь вот что странно. Когда $ == jQuery дает false с помощью консоли Firebug, если я захожу в адресную строку и набираю javascript:alert($ == jQuery);, это предупреждает true!

Кто-нибудь знает, что здесь происходит? Это (иногда) портит мою отладку.


person Nick    schedule 29.08.2010    source источник
comment
Похоже, Firebug для чего-то использует символ $. Просто мысль - не уверен, что это действительно или нет.   -  person Joshua Evensen    schedule 29.08.2010
comment
Это может быть noconflict или что-то в этом роде. Если вы попытаетесь выполнить $===jQuery без фактической загрузки jQuery, вы получите справочную ошибку в дополнение к false   -  person Yi Jiang    schedule 29.08.2010
comment
Командная строка Firebug привязывает $ к функции, которая вызывает getElementById. Я не могу придумать очень вескую практическую причину, по которой между ними может возникнуть путаница, если только вы каким-то образом не запустите фрагмент до полной загрузки сценария jQuery (но мне это кажется маловероятным).   -  person Tim Stone    schedule 29.08.2010
comment
@Ник, какую версию Firebug ты используешь?   -  person Christian C. Salvadó    schedule 29.08.2010
comment
@CMS, Firebug 1.6X.0b1 и Firefox 3.6.8   -  person Nick    schedule 29.08.2010
comment
Существует общая одержимость $. Даже Chrome определяет его как ярлык для getElementById.   -  person Anurag    schedule 29.08.2010
comment
Я всегда набираю var $ = jQuery; в консоли прежде всего :P   -  person BrunoLM    schedule 29.08.2010


Ответы (4)


Существует встроенная функция, определенная firebug, которая присваивает $ для getElementById. Я не думаю, что вы можете решить эту «ошибку» без обновления до более новой версии Firebug, которая потенциально устраняет проблему, или вручную назначив $ = jQuery.

Вероятно, это произошло из-за того, что jQuery уже кэшируется, а Firebug $ переопределяет его, поскольку он срабатывает слишком быстро, или наоборот ... просто какая-то странная ошибка в отношении скорости назначения + кэширования.

person meder omuraliev    schedule 29.08.2010

Может быть, firebug использует $ для чего-то, и есть состояние гонки между jquery и firebug для установки этой переменной, вы должны учитывать, что многие библиотеки javascript используют это имя переменной, если я не ошибаюсь, прототип является одним из них

person Jaime Hablutzel    schedule 29.08.2010

Вы должны использовать instanceof вместо проверки на равенство.

По той причине, по которой, скорее всего, firebug определил $ в локальной области видимости.

person balupton    schedule 29.08.2010

Может быть много других вещей, использующих $ в качестве символа функции/переменной. jQuery — лишь один из них. Firebug, вероятно, переопределяет $.

person F.Z    schedule 29.08.2010