Сценарий JavaScript работает только в Internet Explorer, когда видна панель инструментов разработчика Internet Explorer. - PullRequest
18 голосов
/ 31 июля 2011

Я получил скрипт, работающий на Firefox 5, но не на Internet Explorer 9. Когда я просто открываю Internet Explorer Developer Toolbar addon и пробую те же действия, что и раньше - это работает. На странице есть другой JavaScript-код, который работает, так что это просто часть, которой нет.

Есть ли что-то вроде панели инструментов разработчика, изменяющей какие-либо параметры Internet Explorer во время работы?

Ответы [ 3 ]

52 голосов
/ 31 июля 2011

Если вы не цитировали какой-либо код, нужно угадать.

Я предполагаю, что вы используете console.log (или один из других console методов) в своем коде.В IE8 и IE9 объект console не существует до тех пор, пока не будут открыты инструменты разработчика.Странно, но это правда.

Вы должны получать ошибки сценария вдоль строк "console не определено", когда у вас нет открытых инструментов разработки.

Из-за этого и потому чтоconsole не существует в каждом браузере (конечно, не IE6 или IE7, которые все еще вместе составляют около 18% от общего числа пользователей браузера), лучше не включать их в производственный код или предварительно проверять, существует ли consoleперед его использованием.

7 голосов
/ 31 июля 2011

Доступен ли вашему сценарию доступ к каким-либо методам, доступным только при открытой панели инструментов разработчика, например console.log? Например, выполнение console.log, когда console не определено, поскольку панель инструментов разработчика не открыта, приведет к возникновению исключения.

0 голосов
/ 05 февраля 2016

Как уже упоминалось в аналогичном вопросе , используйте этот код (в теге сценария вверху страницы перед другими тегами сценария, предпочтительно):

(function() {
    var method;
    var noop = function () {};
    var methods = [
        'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
        'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
        'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
        'timeStamp', 'trace', 'warn'
    ];
    var length = methods.length;
    var console = (window.console = window.console || {});

    while (length--) {
        method = methods[length];

        // Only stub undefined methods.
        if (!console[method]) {
            console[method] = noop;
        }
    }
}());

или найдите более свежую версию этого кода здесь: https://github.com/h5bp/html5-boilerplate/blob/master/src/js/plugins.js

Это только что решило ту же проблему для меня.

...