2012-01-24 68 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,我發現缺少一個分號。 –