确定execScript抛出错误的原因

时间:2013-01-15 15:44:12

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

我正在使用ExtJS应用程序,并且Internet Explorer存在兼容性问题。应用程序中断并抛出与此行代码对应的错误:

execScript(code);

使用IE Developer Tools,我发现代码变量包含定制组件的类声明。我不知道是什么导致了这个错误。我已经检查了这个文件3次(1400行代码)。为了记录,这在Firefox和Chrome上完美运行......

所以,我想知道是否有办法更多地了解出了什么问题,并得到一个行号或堆栈跟踪,所以我可以纠正这个。

任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

有完全相同的问题。

花了很长时间才弄清问题是什么,但在我们的例子中,我们从两个单独的对象文字(Status和StatusElements)创建了一个双数组。见下文。

Status = {
    'new': 10,
    'automatic': 15}

StatusElements = {
    10: { name: 'new', color: 'black', bgcolor: '#ffd3cf'},
    15: { name: 'automatic', color: 'black', bgcolor: '#'}}

var y =  [
    [Status.new, StatusElements[Status.new].name],
    [Status.automatic, StatusElements[Status.automatic].name]
    ]

出于某种原因,当尝试评估上面的y时,Internet Explorer会爆炸。

老实说,我不知道为什么execScript(代码);在Internet Explorer中使用上述代码失败。也许这是评估的顺序。也许它会在评估Status和StatusElements之前尝试评估y。无论如何,我们通过降低复杂性并使y等于某些原始值来修复它。