2009-05-02 64 views
1

我正在爲gmail的greasemonkey腳本工作,我需要製作「收件箱」鏈接的副本。使用cloneNode工作正常,但我認爲有一個onclick事件在運行時被附加到它。所以,這是一個兩部分問題: 1.有沒有辦法查看附加到節點的事件? 2.有沒有辦法複製這些事件? 我發現的最接近的是jQuery,我還沒有準備好去那裏。 謝謝!javascript cloneNode與事件

回答

5
  1. 除非它使用元素上的onclick屬性設置。
  2. 不可靠(您可以複製onclick屬性,但是否繼續工作取決於它是否被使用以及它的作用)。

你最好不要加入自己的click處理程序,然後觸發原來那個事件......或模擬一些其他方式的行爲。

+0

我考慮模擬點擊事件,但我找不到一個可靠的方法做到這一點。 – PBG 2009-05-02 21:33:35

0

我認爲我們可以用這一理論來解決這個東東:

我們必須在節點列表JS,也被稱爲liveLists。我們可以檢查它們的長度是否發生變化,在(length-1)列表中添加所需的公共事件到列表中的新元素。

什麼說....

0

下面是使用節點列表添加事件的例子。

<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>