Ошибка JS в IE 9 и 10 - невозможно получить свойство с 1 неопределенной или нулевой ссылкой

0

Я получаю сообщение об ошибке только в IE 9 и 10 (я не поддерживаю ничего ниже IE9), и сайт отлично работает в IE 11 и остальной части браузеров.

Я заполняю информацию о часовом поясе и показываю ее на своей странице, но сценарий дает мне ошибку в вышеупомянутых версиях браузера.

Вот мой код JS

populateLocalTimeInfo: function() {
        var days = [sun, mon, tue, wed, thu, fri, sat],
            weekDayNumber = (new Date).getDay(),
            weekDay = days[weekDayNumber],
            localTime = date.formatFullDate(new Date());

        // Timezone
        var regExp = /\(([^)]+)\)/;
        localTime += ' (' + regExp.exec(new Date)[1] + ')';

        $('#local_time').html(replaceParams(localDateTime, [weekDay, localTime]));
    },

Строка, на которой я получаю ошибку скрипта

localTime += ' (' + regExp.exec(new Date)[1] + ')';

Я совершенно не уверен, почему IE 9 и 10 не смогли разобрать эту строку кода и не смогли получить ошибку свойства. Из-за этого моя страница навсегда загружает контент.

Я не вижу ту же ошибку сценария в IE 11, и страница загружается просто отлично.

  • 0
    Дело не в том, что они не смогли разобрать код, а в том, что запустить его не удалось, возможно потому, что exec вернул null Итак, вопрос, который вы должны задать, почему exec вернул null . Чтобы узнать это, вам нужно посмотреть, что вы получаете от String(new Date) в уязвимых браузерах. Базовая отладка.
  • 0
    days = [sun, mon, tue, wed, thu, fri, sat] « Предположительно, эти переменные ( sun , mon и т. д.) определены где-то в коде, который вы не показывали?
Показать ещё 1 комментарий
Теги:
internet-explorer

1 ответ

2

Ваш код опирается на new Date, преобразованную в строку, с круглыми скобками, как этот пример из Chrome:

Thu Apr 24 2014 08:50:04 GMT+0100 (BST)

Но на IE10 (по крайней мере, в моей локали) у него нет круглых скобок:

Thu Apr 24 08:50:10 UTC+0100 2014

Следовательно, exec возвращает null (потому что не было соответствия), следовательно, ошибка.

Точный формат этой строки не определен по спецификации:

15.9.5.2 Date.prototype.toString( )

Эта функция возвращает значение String. Содержимое String зависит от реализации, но предназначено для представления даты в текущем часовом поясе в удобной, удобочитаемой форме.

  • 0
    Спасибо за ваш ответ. Я вижу, что аргумент Date нельзя назначить параметру типа string. Тем не менее, я все еще не уверен, как решить проблему. Есть ли разница, почему он работает в IE 11, а не в IE 10?
  • 0
    «Я вижу, что аргумент Date нельзя назначить строке типа параметра». А? «Есть ли разница, почему он работает в IE 11, а не в IE 10?» Опять же, базовая отладка: что вы получаете для String(new Date) в IE11? Я предполагаю, что в нем есть круглые скобки.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню