2012-01-24 73 views
2

在我们的某个网站上,我们从Internet Explorer中收到了一个非常神秘的JS错误。在控制台,它说:Internet Explorer 7/8中的隐藏JavaScript错误:':'预计

':' expected 
javascript:false, Line 1 Character 24 

当我在错误点击查看该JS导致错误弹出一条消息:“对于这个错误没有源可用”。所以我真的不能告诉你这是从哪里来的。

这对我来说非常神秘。有谁知道什么可能导致这种情况?

回答

3

这可能来自不正确的object literal。例如:

var foo = {bar}; 

...正好让你在IE 7中描述它期望冒号错误和8

+0

你说得对,我在网站上添加了一些AddThis代码:{title}:{url}并且导致了问题。非常感谢! –

0

我只能真正想到在Javascript中使用冒号的地方,那就是ternary operators。 (编辑:是的,也有对象字面量,谢谢其他海报)

所以有可能你有一条线看起来应该是三元操作符,但缺少冒号?这个假设在“错误”的错误信息中有所支持,因为冒号之后的部分代表错误行为。

的种类得到了与此的jsfiddle了同样的错误:http://jsfiddle.net/CNTY8/

预期 ':'

+0

它们也用于字面对象符号和标签。 – Gumbo

1

在猜测,格式错误的对象字面。像{ foo bar }这应该是{ foo: bar }

1

的地方是:

  1. 对象字面例如var obj = {foo: bar};
  2. 三元操作符例如var str = (i === 0 ? "yes" : "no");
  3. 开关case语句

,可以帮助你缩小范围。但是,我怀疑,因为你似乎表明,问题是只在IE浏览器,这是由于automatic semicolon insertion。为此,我会通过JSLint运行脚本以帮助查找和纠正歧义。

+0

感谢大家。这是一个对象字面值,但是由于JSLint,我发现缺少一个分号。 –