Javascript execScript尝试/捕捉IE 8中的奇怪之处
我在try/catch块中使用execScript来执行一段字符串化的JavaScript。如果字符串中存在javascript错误,则在随后重新加载页面时,execScript将在IE 8中的catch块中返回以下错误: '错误:由于错误80020101,无法完成操作。' 在IE8中是否有其他全局评估javascript的方法不会引发像上面那样的一般错误。我知道使用eval不会起作用,因为它不会在全局上下文中评估javascript 下面是关于我的代码的一些设置,fn是要计算的字符串:Javascript execScript尝试/捕捉IE 8中的奇怪之处,javascript,Javascript,我在try/catch块中使用execScript来执行一段字符串化的JavaScript。如果字符串中存在javascript错误,则在随后重新加载页面时,execScript将在IE 8中的catch块中返回以下错误: '错误:由于错误80020101,无法完成操作。' 在IE8中是否有其他全局评估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
}
}
当IE的脚本引擎遇到无效的javascript(我最近的例子:试图通过COM直接通过SHDocVw.dll调用无效的javascript或不存在的函数)时,我看到了这个错误。因此,我将该错误消息解释为IE8只是简单地认为您正在给它提供无效的东西,并且无论发生什么都会阻塞 这可能是问题所在吗?虽然
document.defaultView.eval.call
在IE9中对我来说仍然很好
我的猜测是,
fn
中有一个bug,也许还有什么东西超出了范围?如果你传递它认为无效的东西,我相信它总是会抛出那个无用的错误。fn
是否自行执行任何空值检查/错误处理?我看到当IE的脚本引擎遇到无效javascript时会发生此错误(我最近的示例:试图通过COM直接通过SHDocVw.dll调用无效javascript或不存在的函数)。因此,我将该错误消息解释为IE8只是简单地认为您正在给它提供无效的东西,并且无论发生什么都会阻塞
这可能是问题所在吗?虽然document.defaultView.eval.call
在IE9中对我来说仍然很好
我的猜测是,fn
中有一个bug,也许还有什么东西超出了范围?如果你传递它认为无效的东西,我相信它总是会抛出那个无用的错误。fn
是否自己进行空值检查/错误处理