javascript - window.onerror 获取元素目标

标签 javascript onerror

如何获取javascript事件错误中的元素目标?

来源:

<button onclick="a(this);">GO!</button>
<script>
window.onerror = function(message, source, lineno, colno, error) {
  console.log(error.stack); // event.target = window
}
</script>

输出:

ReferenceError: a is not defined

at HTMLButtonElement.onclick (onerror.html:1)

这是什么“HTMLButtonElement.onclick”?

var domID = "HTMLButtonElement".id;
addLog(document.querySelector(domID)); //example usage

最佳答案

首先,我强烈建议您不要使用内联 onclick 事件处理程序,因为您遇到的问题 - 它们非常难以调试并且不会促进关注点分离(html 用于标记,js 文件用于逻辑)。

其次,覆盖 onerror 处理程序也有风险,因为您不知道 onerror 处理程序可能期望第三方代码(如果有的话)是什么。这与“不要覆盖基础对象,例如 Array.map = function() {};

”的规则相同

但是,在这种情况下获取元素的方法是以不同的方式编写事件处理程序以捕获错误并使用可用的元素信息重新抛出。

button.addEventListener('click', function() {
    try {
        a(this);
    } catch (e) {
        e.message = e.message + " - element clicked: " + this.id;
        throw e;
    }
});

这是一个 JSFiddle显示示例。

关于javascript - window.onerror 获取元素目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36624132/

相关文章:

javascript - onerror 事件显示图片 - javascript

javascript - JWPlayer .onError 页面刷新时触发

javascript - 如何调试 JS 代码中的 "not found"消息?

javascript - 从 jquery 的 eventData 对象获取错误消息

javascript - window.onerror 不在 Firefox 中触发

Javascript 函数数组失去了 This 范围

JavaScript : passing a function as an argument

javascript - 使用 javascript 替换文本中的单词,但如果该单词位于更大的单词中则不会。

javascript - 如何在 JavaScript 中使用异步循环?

javascript - ajax异步删除帖子 - php