IE 9和10上的JS错误 - 无法获取1个未定义或空引用的属性

时间:2014-04-24 07:42:29

标签: javascript jquery regex internet-explorer

我只在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上看不到相同的脚本错误,页面加载就好了。

1 个答案:

答案 0 :(得分: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(因为没有匹配),因此错误。

该字符串的确切格式is undefined by the specification

  

15.9.5.2 Date.prototype.toString ( )

     

此函数返回String值。 String的内容依赖于实现,但旨在以方便的,人类可读的形式表示当前时区中的Date。