IE8中的Javascript错误:未实现

时间:2009-08-14 18:57:11

标签: javascript internet-explorer internet-explorer-8

这个让我很困惑,因为代码看起来完全无害。

IE8通过以下消息暂停脚本执行:

  

未实施。 map.js行:66 char: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中也不起作用。

2 个答案:

答案 0 :(得分:20)

代码中使用的变量'top'是DispHTMLWindow2(最外层窗口对象)类型的对象,并且已被浏览器使用并导致冲突,因为该对象不能成为赋值操作的目标。似乎Firefox和Safari忽略了这一点,而IE不允许脚本覆盖它。

解决方案:

1)声明top您使用的是局部变量来定义它的使用范围。

2)将变量重命名为与此预定义全局不冲突的内容。

Description of other variable names you shouldn't use

答案 1 :(得分:2)

IE 8有一个很棒的javascript调试器。您可能希望在错误之前的某处添加断点,并逐步执行代码以查看数据是否有异常。 IE8在列表中使用尾随逗号是挑剔的,这可能就是为什么你只能在其中得到错误。您可以使用F12启动调试器,单击脚本并选择开始调试。您可以通过单击行号所在的边距来添加断点。