2009-11-19 10 views
0

Une des caractéristiques est que lorsqu'un utilisateur clique sur quelque chose, quelque chose se passe. Comment puis-je simuler ce clic sans appeler la fonction?Comment simuler un clic en javascript?

+1

Quel est exactement le purprose que vous voulez atteindre? –

+0

Oui, est-ce que vous voulez naviguer vers l'url dans le 'href' du lien? –

Répondre

5

En utilisant jQuery, vous pouvez faire $("#myElementId").click() pour simuler un clic.

+0

+1 pour la réponse et pour l'awesomeness de jquery –

+2

Vraiment jquery est la bombe. –

+0

Vous pouvez également utiliser 'trigger' (http://docs.jquery.com/Events/trigger) – Mottie

6

un clic sur Simuler un élément se fait facilement avec un element.click(); Il n'est pas nécessaire d'installer une bibliothèque jquery de 9000 lignes uniquement pour simuler un clic. Si vous connaissez l'ID d'un élément, en cliquant ce serait aussi simple que cela:

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

obtenir un élément que vous voulez cliquer est plus difficile s'il n'y a pas d'attribut id, mais heureusement il y a Xpath, ainsi obtenir et cliquer sur un élément peut toujours être fait dans une seule ligne de code élégant. Notez que la méthode contains n'a besoin que d'une correspondance partielle de l'attribut src.

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

ou et les opérateurs peuvent être utilisés, comme ceci:

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

Un exemple complet multi-navigateur pourrait ressembler à quelque chose comme ça. Dans IE8 et ci-dessous si l'élément que vous recherchez n'a pas d'identifiant, vous pouvez l'obtenir avec document.getElementsByTagName ('tagname'); puis utilisez une boucle for pour évaluer un attribut de l'élément ou son 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> 
Questions connexes