2011-01-10 64 views
1

我寫了一個小腳本(忽略了我在FaceBook上獲得的數百個愚蠢請求)。如何模擬jQuery的觸發器()?

var inputs = document 
       .getElementById('contentArea') 
       .getElementsByTagName('input'); 

for (var i = 0, inputsLength = inputs.length; i < inputsLength; i++) { 

    if (inputs[i].value !== 'Ignore') { 
     continue; 
    } 

    // What I would do with jQuery, if inputs[i] was a jQuery object. 
    inputs[i].click(); 

} 

所以基本上我想調用所有這些忽略按鈕上的click事件,讓FaceBook的AJAX完成剩下的工作。

如何在沒有jQuery的情況下模擬點擊?我已經谷歌搜索,但沒有找到答案。

回答

1

.click() is a method of HTMLInputElements in Firefox(不知道是否在其他瀏覽器太)。

的另一種方式,應該在其他瀏覽器中工作過,使用document.createEvent

var inputs = document 
       .getElementById('contentArea') 
       .getElementsByTagName('input'); 

for (var i = 0, inputsLength = inputs.length; i < inputsLength; i++) { 

    if (inputs[i].value !== 'Ignore') { 
     continue; 
    } 
    // maybe it is enough to create it only once before the the loop, don't know 
    var evt = document.createEvent("MouseEvents"); 
    evt.initMouseEvent("click", true, true, window, 
     0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    inputs[i].dispatchEvent(evt); 

} 

當然人會在功能封裝這使其可重複使用;)

+0

+1,和我當我學到一些東西(`document.createEvent()`)時,它將被接受。在這種情況下,我不會封裝它,因爲我直接在控制檯中運行它,只有一次=}。感謝您的回答。 – alex 2011-01-10 02:03:48

1

我剛剛試過上面的代碼(使用click()),它在我的Firefox中工作。

所以我想答案是,這樣做就像jQuery

最後的代碼是...

var inputs = document 
      .getElementById('contentArea') 
      .getElementsByTagName('input'); 

for (var i = 0, inputsLength = inputs.length; i < inputsLength; i++) { 

    if (inputs[i].name !== 'actions[reject]') { 
     continue; 
    } 

    inputs[i].click(); 

}