2009-08-14 73 views
10

這一個真的讓我感到困惑,因爲代碼看起來完全無害。IE8中的Javascript錯誤:未實現

IE8暫停腳本執行與消息:

未實現。 map.js行:66焦炭:5

下面是從一個代碼剪斷:

63 if(data.map[x] !== undefined && data.map[x][y] !== undefined) { 
64    
65 left = (x - data.dim.x_min)*32 + 30; 
66 top = (data.dim.y_max - y)*32 + 30; 
67 
68 /* do stuff */ 
XX } 

調試信息:X:263 data.dim.x_min:263 Y:172 data.dim。 y_max:174

數據是從JQuery Ajax調用返回的對象。這適用於Firefox 3.0和3.5,Safari 4.0.2,並且在IE8中查看頁面時只發現此錯誤。強制IE8進入IE7模式不會導致錯誤消失。

我沒有IE7調試,但我有一個測試人員說,它不能在IE7中工作。

+0

它看起來正確的...我也有興趣知道爲什麼這不起作用。 你可以一步一步調試嗎? – 2009-08-14 19:14:33

回答

20

代碼中使用的變量「top」是DispHTMLWindow2(最外層窗口對象)類型的對象,並且由瀏覽器使用並導致衝突,因爲該對象不能作爲賦值操作的目標。似乎Firefox和Safari忽略了這一點,而IE不允許腳本覆蓋這個。

解決方案是:

1)聲明你正在使用的局部變量來定義它的範圍需要用到它上面。

2)將變量重命名爲與此預定義的全局不衝突的變量。

Description of other variable names you shouldn't use

+4

自「操作中止」以來最有用的錯誤消息 – Triptych 2009-08-14 20:28:28

+0

解決方案1爲我工作。謝謝 – user427969 2012-10-31 05:01:37

2

IE 8有一個很棒的javascript調試器。您可能希望在錯誤之前的某個位置添加斷點,然後逐句通過代碼以查看數據是否有什麼奇怪之處。 IE8對列表中的尾隨逗號很挑剔,這可能就是爲什麼你只能得到它的錯誤。您可以用F12拉起調試器,點擊腳本並選擇開始調試。您可以通過單擊行號的邊距來添加斷點。

+0

F12評論對我來說很方便。我想知道如何在IE中獲得像Firebug那樣的功能,如果只是基礎。 – Belrog 2011-12-30 12:15:32