1

我正在为gmail编写一个greasemonkey脚本,我需要在其中复制“收件箱”链接。使用 cloneNode 工作正常,但我认为有一个 onclick 事件会在运行时附加到它。所以,这是一个由两部分组成的问题: 1. 有没有办法查看节点上附加了哪些事件?2. 有没有办法复制这些事件?我发现的最接近的东西是 jQuery,我还没有准备好去那里。谢谢!

4

3 回答 3

5
  1. 除非它是使用onclick元素上的属性设置的。
  2. 不可靠(您可以复制该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 回答