我在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
}
}
答案 0 :(得分:1)
我已经看到当IE的脚本引擎遇到无效的javascript时出现这个错误(我最近的例子:尝试通过COM直接通过SHDocVw.dll调用无效的javascript或不存在的函数)。因此,我将该错误消息解释为IE8只是简单地认为您正在为它提供无效的东西,无论如何都会窒息。
这可能是问题吗? IE 8 defaultView equivalent虽然在IE9中我document.defaultView.eval.call
似乎仍然可以正常使用。
我的猜测是fn
中有一个错误,也许某些内容仍然超出范围?如果你传递它认为无效的东西,我相信它总是会抛出那个无益的错误。 fn
是否正在进行自己的空检查/错误处理?