Может ли Firebug запускаться на моем сайте? - PullRequest
5 голосов
/ 11 сентября 2009

Я работаю над новым проектом, в котором есть какой-то сложный JavaScript. Я не могу опубликовать какой-либо код, поэтому мой вопрос не в этом.

У меня есть скрипт, который работает в Firefox 3.0. Было отмечено, что скрипт не работает в Firefox 3.5, поэтому я пытаюсь заставить его работать. Действительно, скрипт не дал ожидаемых результатов, поэтому я установил последнюю версию Firebug, включил console и обновил страницу.

И вау, это сработало.

Нет ошибок, ничего не предупреждает.

Итак, я отключил консоль, и она перестала работать ...

Что здесь происходит? Консоль Firebug как-то меняет что-то в Firefox, что заставляет мой скрипт работать? Любой совет, что дальше? (кроме того, чтобы попросить будущих посетителей установить Firebug ...)

Ответы [ 4 ]

10 голосов
/ 11 сентября 2009

Может ли быть что-то столь же простое, как забыть прокомментировать звонок на console.log() где-нибудь в вашем JavaScript?

Если у вас есть зависшие ссылки, а у пользователя не установлен Firebug, вы получите ошибку времени выполнения, которая остановит выполнение скрипта.

7 голосов
/ 11 сентября 2009

Мне кажется, что есть вероятность того, что у вас проблема с потоками, и FireBug анализирует и, возможно, замедляет один из потоков, чтобы у него было время для завершения до решения следующего шага.

Возможно, вы используете ajax, и что-то ждет этого ответа? Или, возможно, вы делаете что-то на или после загрузки объекта, который зависит от чего-то еще в DOM?

UPDATE: Для тех, кто сталкивается с этим сейчас, «потоки» в JavaScript действительно существуют только в абстракции (веб-работники и т. Д.). Я неправильно использовал термин. Я действительно думал об асинхронном действии, которое вернулось прежде, чем другое было готово.

6 голосов
/ 11 сентября 2009

Проверьте в своем коде console.log (), console.debug (). Вызов методов объектов window.console выдает ошибку, если консоль не определена (как и ожидалось).

В большинстве случаев вы можете легко удалить или прокомментировать эти строки.

0 голосов
/ 22 января 2010

Я написал простую оболочку для firebug (я просто использую отладку, но она должна дать вам то, что вам нужно для дублирования других методов), которая пишет только тогда, когда консоль есть, поэтому я могу использовать firebug, не нужно комментировать мои утверждения отладки, и это не нарушает сайты для людей без него.

Если вы используете этот код, то используйте fbconsole.debug вместо console.debug, у вас никогда не возникнет этой проблемы:

function fbconsole () {
    this.debug = function (val) {
        if(typeof(console) !== 'undefined' && console != null) {
            console.debug(val);
            }
        }
    }
var fbconsole = new fbconsole();
...