1

我在 try/catch 块中使用 execScript 来执行一段字符串化的 JavaScript。如果字符串在 execScript 中存在 javascript 错误,则在随后重新加载页面时,将在 IE 8 的 catch 块中返回以下错误:

“错误:由于错误 80020101,无法完成操作。”

是否有任何其他方法可以在 IE 8 中全局评估 javascript,不会引发像上面那样的一般错误。我知道使用 eval 将不起作用,因为它不会在全局上下文中评估 javascript。

下面是关于我的代码的一些设置,fn 是要评估的字符串:

// fn is defined somewhere above this code

function globalEvaluation() {
    if(document.defaultView) {
       document.defaultView.eval.call(undefined, fn);
    } else if (document.parentWindow) {
        document.parentWindow.execScript(fn);
    } 
}

return function() {
    try {
         globalEvaluation();
    } catch(e) {
       // do some error handling
       // in IE 8 I get the 80020101 error
   }
}
4

1 回答 1

1

我已经看到当 IE 的脚本引擎遇到无效的 javascript 时会发生此错误(我最近的示例:尝试通过 COM 直接通过 SHDocVw.dll 调用无效的 javascript 或不存在的函数)。所以我将该错误消息解释为 IE8 只是简单地认为你正在给它喂一些无效的东西并且无论如何都会窒息。

这可能是问题吗?IE 8 defaultView 等效虽然document.defaultView.eval.call在 IE9 中对我来说似乎仍然可以正常工作。

我的猜测是 有一个错误fn,也许某些东西仍然超出范围?如果你传递一些它认为无效的东西,我相信它总是会抛出那个无用的错误。是否fn自行进行任何空值检查/错误处理?

于 2012-06-11T22:29:57.507 回答