带有事件的javascript cloneNode

时间:2009-05-02 21:16:30

标签: javascript gmail greasemonkey

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

3 个答案:

答案 0 :(得分:5)

  1. 除非使用元素上的onclick属性进行设置。
  2. 不可靠(您可以复制onclick属性,但这是否会继续有效取决于它是否被使用以及它的用途。)
  3. 最好添加自己的click处理程序,然后在原始事件上触发该事件......或以其他方式模拟行为。

答案 1 :(得分:0)

我认为我们可以使用这个理论来解决这个问题:

我们在JS中有NodeList,也称为liveLists。我们可以检查它们的长度是否发生变化,将所需的公共事件添加到列表中的新元素(length-1)。

说什么......

答案 2 :(得分: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>