2009-11-19 63 views
0

其中一項功能是當用戶點擊某物時會發生某些事情。如何在不調用函數的情況下模擬此點擊?如何模擬javascript中的點擊?

+1

你想要達到什麼樣的purprose? – 2009-11-19 19:49:05

+0

是的,你是否想要導航到鏈接的'href'中的url? – 2009-11-19 19:55:16

回答

5

使用jQuery,你可以做$("#myElementId").click()模擬點擊。

+0

+1爲答案和jquery的迷人 – 2009-11-19 19:45:32

+2

真正的jquery是炸彈。 – 2009-11-19 19:47:01

+0

你也可以使用'trigger'(http://docs.jquery.com/Events/trigger) – Mottie 2009-11-19 20:31:04

6

的模擬元件上的點擊容易與element.click()完成的; 沒有必要安裝一個9000行的jQuery庫來模擬點擊。如果你知道一個元素的ID,點擊它會是這樣簡單:

document.getElementById('someID').click(); 

得到你想要點擊一個元素是難上加難,如果沒有id屬性,但幸運的是Xpath的,因此讓和點擊一個元素仍然可以在一行優雅的代碼中完成。請注意,包含方法只需要src屬性的部分匹配。

document.evaluate(" //a[ contains(@src, 'someURL') ] ", document.body, null, 9, null). singleNodeValue.click(); 

或和,並且可以使用運營商,像這樣:

document.evaluate(" //*[ contains(@id, 'someID') or contains(@name, 'someName') ] ", document, null, 9, null). singleNodeValue.click(); 

一個完整的多瀏覽器的例子可能看起來類似的東西。在IE8及以下版本中,如果你之後的元素沒有id,你可以用document.getElementsByTagName('tagname');然後使用for循環來評估元素或其innerHTML的某個屬性。

<html> 
<body> 
<input type='button' id='someID' value='click it' onclick='myAlert()' /> 

<p onclick="simulateClick()" >Click the text to simulate clicking the button above - the button will be automatically clicked in 3.5 seconds 

<script> 

function simulateClick(){ 
var button; 
try{ // Xpath for most browsers 
button = document.evaluate(".//input[ contains(@id, 'someID') ] ", document.body, null, 9, null). singleNodeValue; 
}catch(err){ // DOM method for IE8 and below 
button = document.getElementById("someID"); 
} 

if (button) { button.click(); } 
else { alert("No button was found, so I can't click it"); } 

} 

function myAlert(){alert("button clicked")} 

setTimeout(simulateClick, 3500); 

</script> 
</body> 
</html>