Я получаю сообщение об ошибке только в 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, и страница загружается просто отлично.
Ваш код опирается на 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 зависит от реализации, но предназначено для представления даты в текущем часовом поясе в удобной, удобочитаемой форме.
String(new Date)
в IE11? Я предполагаю, что в нем есть круглые скобки.
exec
вернулnull
Итак, вопрос, который вы должны задать, почемуexec
вернулnull
. Чтобы узнать это, вам нужно посмотреть, что вы получаете отString(new Date)
в уязвимых браузерах. Базовая отладка.days = [sun, mon, tue, wed, thu, fri, sat]
« Предположительно, эти переменные (sun
,mon
и т. д.) определены где-то в коде, который вы не показывали?