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

有帮助吗?

解决方案

  1. 除非使用元素上的 onclick 属性进行设置。
  2. 不可靠(你可以复制 onclick 属性,但是否会继续工作取决于它是否被使用及其作用)。
  3. 你最好添加自己的 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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top