2013-04-14 69 views
3

當我使用方法click()單擊按鈕時,提交失敗。
但是,當我用鼠標點擊該網頁上的按鈕時,(提交表單是相同的)它的工作原理。DOM單擊()在此按鈕上不起作用

HTML文件:

<button xmlns="http://www.w3.org/1999/xhtml" class="ui-button button1"  type="submit" id="create"> 
    <span> 
     <span>Create</span> 
    </span> 
</button> 

我userscript文件:

document.getElementById("create").click(); 

如何使用HTML DOM點擊我按一下按鈕()?

+0

http://www.randomsnippets.com/2008/03/05/simulate-a-button-click-via-javascript/ – Elior

回答

0

click方法並不總是有效。同樣嘗試發送click事件this answer

var targBtn  = document.querySelector ("#create"); 
var clickEvent = document.createEvent ('MouseEvents'); 
clickEvent.initEvent ('click', true, true); 
targBtn.dispatchEvent (clickEvent); 

還要提防,按鈕可能無法在點擊操作的。請參閱"Choosing and activating the right controls on an AJAX-driven site"

該按鈕可能在mousedown,mouseup或某些事件組合上操作。使用該問題的技巧來激活控件。 鏈接到目標頁面,如果你不能得到它的工作。

+1

感謝所有相同的。我解決它使用settimeout。 window.setTimeout(function(){ document.getElementById(「button-create」)。click(); },3000)因爲click()太快而無法獲得表單中的一個屬性,所以失敗 – CodeCat

+0

很高興得到它的工作。如果你讓我們知道內容是通過javascript(AJAX)添加的,那麼下次你會得到更好更快的答案。 –

0

包裹在一個匿名的自我執行的構建,像這樣的電話:

(function(){ 
    document.getElementById("create").click(); 
})(); 

加載的JavaScript時,這將模擬一個click

0

也許不是點擊按鈕。 您可以在JavaScript提交形式

document.getElementByName('form1').submit(); 

,因爲它滿足您的要求。

+0

善於思考,不同的是沒有形式的問題指出,和'

0

如果你是靈活的關於您的按鈕的值,那麼做到這一點:

<button xmlns="http://www.w3.org/1999/xhtml" class="ui-button button1" value="submit" type="submit" id="create"> 

document.getButtonByValue('submit').click(); 

這一切正常。

jsfiddle link

+1

這是一個*** userscript ***問題。在這些問題中,OP通常無法控制頁面的HTML。 –