【问题标题】:window.onerror get Element targetwindow.onerror 获取元素目标
【发布时间】:2016-08-06 01:38:01
【问题描述】:

如何在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 未定义

在 HTMLButtonElement.onclick (onerror.html:1)

这是什么“HTMLButtonElement.onclick”?

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

【问题讨论】:

  • 没有办法从onerror中获取元素。

标签: javascript onerror


【解决方案1】:

首先,由于您遇到的问题,我强烈建议您不要使用内联 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 显示示例。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 2022-06-10
  • 2021-03-25
  • 2011-06-29
  • 2017-02-23
  • 1970-01-01
相关资源
最近更新 更多