2011-03-18 72 views
5

我正試圖編寫一個通過瀏覽器更新項目集合的庫存的greasemonkey腳本。要做到這一點,我需要自動填寫幾個表單,並在提交按鈕上模擬鼠標點擊。我有表格填寫正常,但我堅持按鈕提交。試圖模擬用greasemonkey單擊一個按鈕

下面是按鈕,我試圖模擬點擊

<input type="submit" value="Find" style="" name="process-form" onclick="imhocaller.value='find-resources-page.left'; imhoaction.value='process-form';"> 

我試圖做這樣的事情的HTML,但還沒有任何運氣。

document.getElementsByName('process-form').submit(); 

我可以發佈更多的代碼,如果需要的話。謝謝!

回答

6

您還可以通過最近的瀏覽器發送自定義點擊事件,並在IE中「激發」onclick事件。這是最近的一項功能,可以對事件進行大量的控制。

var button = document.getElementById("test"); 
button.onclick = function() 
{ 
    alert("event was dispatched on me");  
} 
if(document.createEvent) 
{ 
    var click = document.createEvent("MouseEvents"); 
    click.initMouseEvent("click", true, true, window, 
    0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    button = document.getElementById("test"); 
    button.dispatchEvent(click); 
    button.focus(); 
}else if(document.documentElement.fireEvent) 
{ 
    button = document.getElementById("test"); 
    button.fireEvent("onclick"); 
    button.focus(); 
} 

http://jsfiddle.net/ZWyp7/3/

請注意,您需要調度它之前監聽的事件。

+0

謝謝!我想這可能是最好的辦法。 – 2011-12-23 00:10:10

1

試試這個document.getElementsByName('process-form')[0] .submit();

UPD:對!必須是.click()而不是.submit()

+0

不,看起來沒有效果。儘管謝謝你的迴應! – 2011-03-18 20:22:20

5

想通了。需要使用.click()而不是.submit()。 我還需要像Georgy建議的那樣添加[0]。

document.getElementsByName('process-form')[0].click(); 
0

在這裏你嘗試提交一個輸入,你必須提交表單。因此,如果您標記爲#myForm的ID,則需要執行以下操作:document.getElementById('myForm').submit()

0

另一種方法是在JQuery中使用.trigger("submit")