带有事件的javascript cloneNode
-
03-07-2019 - |
题
我正在为gmail编写一个greasemonkey脚本,我需要复制一份“收件箱”。链接。使用cloneNode工作正常,但我认为有一个onclick事件在运行时附加到它。所以,这是一个两部分问题: 1.有没有办法查看哪些事件附加到节点? 2.有没有办法复制这些事件? 我发现最接近的是jQuery,我还没准备好去那里。 谢谢!
解决方案
- 除非使用元素上的
onclick
属性进行设置。 - 不可靠(你可以复制
onclick
属性,但是否会继续工作取决于它是否被使用及其作用)。
醇>
你最好添加自己的 click
处理程序,然后在原始程序上触发该事件......或以其他方式模拟行为。
其他提示
我认为我们可以使用这个理论来解决这个问题:
我们在JS中有NodeList,也称为liveLists。我们可以检查它们的长度是否发生变化,将所需的公共事件添加到列表中的新元素(length-1)。
说什么......
以下是使用Nodelist添加事件的示例。
<body>
<div id="one" class="clones" style="background:red;width:100px;height:100px"></div>
</body>
<script>
//Selecor based live list [Advantage]
var nodeList = document.getElementsByClassName('clones')
//Common Function for nodelist
nodeList.addEvents = function(){
nodeList.item(nodeList.length-1).addEventListener('click',function(){
console.log(this.id);
});
}
nodeList.addEvents();
//Making Clone
var _clone = document.getElementsByTagName('div')[0].cloneNode(true);
//Changing Id
_clone.id="two"
document.body.appendChild(_clone);
nodeList.addEvents();
</script>
不隶属于 StackOverflow