![](/img/trans.png)
[英]How can I get the script name where an object of class is initiated within the class in JavaScript
[英]How can I find where a javascript event is initiated?
我有一个JS脚本,它创建了一个新的Node并将其插入HTML页面。 我正在处理DOM突变事件,并且可以捕获DOMNodeInserted事件。 在该函数中,我想找出源(即在HTML的哪一部分中调用了脚本函数)和目标(即在HTML页面中的哪一部分中添加了节点)。
我可以使用event.target
找到目标,但是我找不到事件的来源。
例如,考虑以下伪代码HTML页面:
<html>
<head>
<script>
function test() {
//DOM access
<div_object>.setAttribute("attr", "value");
}
</script>
</head>
<body onload="test()">
<div id="123">
</div>
</body>
</html>
我希望我的源代码为BODY(因为该脚本已启动),目标应该为div(123)(因为该属性已添加到div_123。
我怎样才能做到这一点?
关于什么
<html>
<head>
<script>
function test(element) {
//DOM access
element.setAttribute("attr", "value");
}
</script>
</head>
<body onload="test(this)">
<div id="123">
</div>
</body>
</html>
?
有趣。 我在这里看过(回答是否格式化)
<html>
<head>
<script>
function test(e) {
if (e) var event=e;
//DOM access
var t="";
for (o in event) t+='<br/>'+o+':'+event[o]
document.getElementById('d123').innerHTML=t;
}
</script>
</head>
<body onload="test(event)">
<div id="d123">
</div>
</body>
</html>
抱歉,您无法找出导致事件触发的代码段,它们已完全分离。 您必须通过将其自身的this
/ event.target
的值存储在变量中来使触发代码协同工作,以便以后触发的代码能够使用。
但是,如果您有这样的合作,则不需要DOM突变事件。
如果您有一个事件处理层(作为许多JS框架的一部分),则可以将this
/ target
跟踪放在该层中,因此触发的代码可以询问“在我之前发生的最后一个事件是什么?”。
但是我不相信这是值得的。 通常最好添加您自己的在组件之间通信的合作挂钩。 您通常不能依赖DOM突变事件,因为它们不受全局和完全支持(或实际上在IE <9上完全不受支持)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.