我正在为gmail编写一个greasemonkey脚本,我需要在其中复制“收件箱”链接。使用 cloneNode 工作正常,但我认为有一个 onclick 事件会在运行时附加到它。所以,这是一个由两部分组成的问题: 1. 有没有办法查看节点上附加了哪些事件?2. 有没有办法复制这些事件?我发现的最接近的东西是 jQuery,我还没有准备好去那里。谢谢!
问问题
2458 次
3 回答
5
- 除非它是使用
onclick
元素上的属性设置的。 - 不可靠(您可以复制该
onclick
属性,但它是否会继续工作取决于它是否被使用以及它的作用)。
您最好添加自己的click
处理程序,然后在原始事件上触发该事件......或者以其他方式模拟行为。
于 2009-05-02T21:29:42.220 回答
0
我认为我们可以使用这个理论来解决这个问题:
我们在 JS 中有 NodeList,也称为 liveLists。我们可以检查它们的长度何时发生变化,将所需的公共事件添加到列表中 (length-1) 处的新元素。
说啥....
于 2013-08-10T18:20:03.307 回答
0
这是使用 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>
于 2013-08-10T19:02:06.093 回答