execScript try/catch in IE 8 中的怪异之处
execScript try/catch oddity in IE 8
我在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
}
}
当IE的脚本引擎遇到无效的javascript时,我看到会发生此错误(我最近的例子:尝试通过COM直接通过SHDocVw调用无效的javascript或不存在的函数.dll(。 所以我把这条错误消息解释为IE8只是简单地认为你给它喂的东西是无效的,无论如何都会窒息。
这可能是问题所在吗?IE 8 默认视图等效 虽然document.defaultView.eval.call
似乎在 IE9 中对我来说仍然很好用。
我的猜测是fn
中存在错误,也许某些内容仍然超出范围?如果你传递它认为无效的东西,我相信它总是会抛出那个无用的错误。fn
是否正在自己进行任何空检查/错误处理?
相关文章:
- errors with Javascript try catch
- JSON.parse,已经在try/catch块中,仍然抛出语法错误
- 在try-catch块内的HTML文件中导入JavaScript文件
- 有没有一种方法可以将try-catch添加到Javascript中的每个函数中
- Javascript Try Catch for DIV
- Safari 在尝试使用 Javascript try/catch 访问父窗口对象时未捕获异常
- 与在异步回调链中使用 try catch 块相比,返回异常有什么优势
- 在 Javascript 中,即使从未抛出异常,使用 try-catch 块是否昂贵
- JavaScript 中的 try-catch:如何获取原始错误的堆栈跟踪或行号
- 使用 try catch(e) 进行浏览器功能检测
- 了解 JavaScript 中的异常处理:当更改 try/catch 块的位置时,获得不同的输出
- 在 JavaScript 中用“try catch”包装每个方法的性能问题
- execScript try/catch in IE 8 中的怪异之处
- Javascript代码仅在FireFox中的try-catch块中失败
- 在 AJAX 响应中查找嵌套属性,这是 try/catch 的情况
- 使用 window.onerror 和 try-catch 块处理错误之间的差异
- 在声明变量时使用 try catch
- Array.map+try/catch传递了引用赋值延迟
- 在PHP中使用Try-catch结构
- 如何停止javascript中嵌套try/catch错误的传播