javascript - DOMException 在 Chrome 中有堆栈,但在 Firefox 中没有

标签 javascript firefox dom stack stack-trace

我正在尝试在 JavaScript 中生成堆栈跟踪。我有一个在 Chrome 中运行良好的实现,但在 Firefox 中存在一个问题:像 DOMExceptions 这样的 native 异常没有 .stack 属性。

<div id="test"></div>
<script type="text/javascript">
try {
    var range = document.createRange();
    range.setStart(document.getElementById("test"), -1); // throws Exception
} catch (e) {
    console.log(e.stack);
}
</script>

这将给出错误:索引或大小为负数,或大于允许的值。 在 Chrome 中位于 http://test/test.html:5:8

但是在 Firefox 中我得到了未定义 - 悲伤的事实:(

我知道Eriwen's stacktrace scriptstracktracejs我的实现受到了的启发。我会考虑使用 caller.callee 后备,但我不想这样做,因为我无法获取文件和行号。

您知道更好的解决方案吗?

<小时/>

我可以将可疑调用包装在 try-catch 语句中,但在收到实际错误之前我不知道调用是否可疑,然后我将修复代码,使其永远不会再次抛出。

我可以捕获异常并重新抛出新错误(e.message),但随后我也会丢失堆栈跟踪。

最佳答案

我试过e.location但这会导致 known bug in FirefoxError: Permission denied for <file://> to create wrapper for object of class UnnamedClass .

可以访问e.filenamee.lineNumber 。这就是我现在要采用的解决方案。

关于javascript - DOMException 在 Chrome 中有堆栈,但在 Firefox 中没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13252209/

相关文章:

javascript - 在javascript中通过类名选择元素

javascript - 用于创建 D3 TreeMap 的 Neo4j 结果(JSON 格式)

javascript - foo.join 和 foo.resolve 之间的区别?在网页包中

javascript - jQuery 中基于过滤器的排序

javascript - 使用 numRows 和 numCols 动态创建表骨架

firefox - 基于Firefox的 `-app`开关构建独立的XUL程序

css - Firefox 和 WebKit 之间文本输入元素的高度不一致

javascript - 确定最大可能的 DIV 高度

javascript - 获取 "object HTMLInputElement"的值和函数错误

php - 如何在 Apache2 下禁用 PHP AJAX 请求/响应的 gzip 压缩?