为什么赢了';IE的任何版本都不能处理这个Javascript吗?

为什么赢了';IE的任何版本都不能处理这个Javascript吗?,javascript,jquery,internet-explorer,attributes,Javascript,Jquery,Internet Explorer,Attributes,这是代码,为jQ插件更改背景图像,在Chrome、FF、Safari甚至我的两部智能手机上都能很好地工作。但不是IE,有人能发现问题吗 <script type="text/javascript"> $(document).ready(function() { $("#supersized img").attr({ src: "images/bg2.jpg", }); $("#supersized").attr($("img")); })

这是代码,为jQ插件更改背景图像,在Chrome、FF、Safari甚至我的两部智能手机上都能很好地工作。但不是IE,有人能发现问题吗

<script type="text/javascript">
$(document).ready(function() {
$("#supersized img").attr({ 
          src: "images/bg2.jpg",
        });
    $("#supersized").attr($("img"));
});
</script>

$(文档).ready(函数(){
$(“#超级img”).attr({
src:“images/bg2.jpg”,
});
$(“#超大”).attr($($(“img”);
});

对象文本中有一个尾随逗号。这总是会导致IE浏览器出错。

这个问题不仅与Internet Explorer有关,因为我注意到只有Firefox会在没有警告的情况下执行它。在本例中,对象键假定使用单引号或双引号正确转义的原因

{ 'src': "images/bg2.jpg" } 

并且在图像路径后也去除彗差。

IE对其对象文字的形成非常严格。很多时候,它不喜欢在最后一个属性后面加逗号。因此,在本例中,
src
属性后面的逗号将给出IE fit,最著名的是IE 6和IE 7

$("#supersized img").attr({ 
          src: "images/bg2.jpg"  //<-- notice no comma after property value because it's the last one.
        });
    $("#supersized").attr($("img"));
});
$(“#超级img”).attr({

src:“images/bg2.jpg”//src:“images/bg2.jpg”后去掉逗号会发生什么?如果键是有效标识符(如src),则不需要在引号中,但IE中的尾随逗号是对的。这不是真的。在任何浏览器中,不带引号的键都是合法的JavaScript。问题在于逗号。Chrome不喜欢它,一些键应该转义以避免与其他默认关键字冲突。JavaScript保留字确实不能用作标识符,但
src
不是保留字,Chrome在解释
{src:“images/bg2.jpg”}
时没有问题。这里没有json,但IE中的尾随逗号是对的。
{src:“images/bg2.jpg”}
不是传递给
.attr()的json对象吗
?@jondavidjon:很抱歉延迟。不,JSON是一种数据交换格式,其结构基于javascript中的对象和数组结构(因此很容易解析为javascript),但最终JSON数据是文本。这里的代码是javascript对象文本。这是一个对象文本的示例:
{a:“b”}
。这是一个有效JSON数据的示例,
“{”a:“b”}”
(请注意,它是一个字符串),可以解析为第一个版本。明白了,调整后的答案,感谢您跟踪我并在我之后清理!;)