如何在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)
这是什么&#34; HTMLButtonElement.onclick&#34; ?
var domID = "HTMLButtonElement".id;
addLog(document.querySelector(domID)); //example usage
答案 0 :(得分:0)
首先,我强烈建议您不要使用内联onclick事件处理程序,因为您遇到的问题 - 他们难以调试并且不会促进关注点的分离(html用于标记,js文件用于逻辑)。
其次,覆盖错误处理程序也存在风险,因为您不知道第三方代码(如果有的话)可能会从错误处理程序中得到什么。这与&#34;不要覆盖基础对象的规则相同,例如。 Array.map = function() {};
但是,在这种情况下获取元素的方法是以不同的方式编写事件处理程序以捕获错误并使用可用的元素信息重新抛出。
button.addEventListener('click', function() {
try {
a(this);
} catch (e) {
e.message = e.message + " - element clicked: " + this.id;
throw e;
}
});
这里有一个显示示例的JSFiddle。