使用jQuery时奇怪的IE8错误

时间:2013-09-20 22:32:36

标签: javascript jquery html css internet-explorer-8

我只在IE8中遇到一个奇怪的错误,而不是在IE9中。错误消息是:

  

SCRIPT1028:预期的标识符,字符串或数字

这是我的标记:

<style>
    .warrior { color: red; }
    .ninja  { color: blue; }
    .wizard { color: green; }
</style>

<div id="player"></div>
<script src="Scripts/jquery.min.js"></script>
<script>
    (function () { 
        "use strict"; 

        var joeBlow = {
            name: "Joe Blow",
            class: "ninja", 
            age: 35
        };
        $("#player").html(joeBlow.name + " " + joeBlow.age).addClass(joeBlow.class);
    }());
</script>

我的期望是DIV将以“Blue Blow 35”写成蓝色,但我收到上述错误。

在IE8中导致这种情况的原因是什么,而不是IE9或IE10?

2 个答案:

答案 0 :(得分:6)

class是保留关键字。在它周围加上引号'class'。您可能还必须使用[]中的joeBlow['class']表示法访问该媒体资源。

答案 1 :(得分:2)

正如plalx解释的那样,你必须引用class并使用括号表示法来支持IE 8作为属性名称,因为它是一个保留字。

var joeBlow = {
    name: "Joe Blow",
    'class': "ninja", 
    age: 35
};
$("#player").html(/* ... */).addClass(joeBlow['class']);

或者,使用该属性的其他名称。 (注意:这是W3C为className选择的选项。)

但是,要进一步解释原因:

这是由于所使用的标准不同。具体来说,IE 8实现了ECMAScript 3,而IE 9和10实现了ECMAScript 5

并且,在这些版本的ECMAScript之间,Object initialisersdot notation的语法更改为允许任何IdentifierNames(ES5),其中包括 ReservedWords 而不是仅限于标识符(ES3)。

  

标识符 ::    IdentifierName 但不是 ReservedWord