2010-05-23 24 views
7

È possibile simulare un clic su una pagina Web utilizzando javascript ma senza definire un elemento specifico, ma piuttosto limitandosi a specificare il documento?Simulazione del clic con javascript sul documento

mi sarebbe piaciuto fare qualcosa di simile, e se la posizione accade di avere un link, allora questo sarà premuto:

function simulateClick(x, y) 
{ 
    var evt = window.createEvent("MouseEvents"); 
    evt.initMouseEvent("click", true, true, window, 
     x, y, x, y, 1, false, false, false, false, 0, null); 

    window.dispatchEvent(evt); 
} 

risposta

5

window.dispatchEvent dovrebbe fare il trucco.

<script> 
function simulateClick() { 
    var evt = document.createEvent("Events"); 
    evt.initEvent("click", true, true); 
    window.dispatchEvent(evt); 
} 
addEventListener('click',function(){alert('test');},false); 
</script> 
<button onclick="simulateClick();">Go</button> 

Oppure ... con informazioni aggiuntive MouseEvents:

<script> 
function simulateClick() { 
    var evt = document.createEvent("MouseEvents"); 
    evt.initMouseEvent("click", true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null); 
    window.dispatchEvent(evt); 
} 
addEventListener('click',function(){alert('test');},false); 
</script> 
<button onclick="simulateClick();">Go</button> 

Gli esempi sopra causerà uno scatto da simulare sul window quando il button viene cliccato. Un ascoltatore di eventi viene aggiunto a window a alert quando si fa clic, pertanto, facendo clic su button si attiverà indirettamente un alert.

Maggiori informazioni: http://www.howtocreate.co.uk/tutorials/javascript/domevents

+0

Voglio essere in grado di fornire le coordinate dell'evento in modo che questo possa essere chiamato a livello di programmazione da un framework esterno. – Charlie

+0

Ehilà, ho appena aggiunto un altro esempio con i dati specifici di 'MouseEvents'. –

+0

È meglio :-) Per cosa è "addEventListener"? – Charlie

0

Nel caso qualcuno si imbatte in questa ricerca di un quadro agnostica modo di sparare qualsiasi HTML e eventi del mouse (e impostare alcune opzioni, se necessario), date un'occhiata qui: How to simulate a mouse click using JavaScript?

+1

Nell'ultima ora circa abbiamo notato che hai pubblicato la stessa risposta a un certo numero di domande. Sebbene apprezziamo i vostri sforzi per arrivare alla soluzione che descrivete, sarebbe più utile se poteste esprimere le vostre risposte per affrontare il problema specifico dell'OP invece di pubblicare la stessa risposta standard. In caso contrario, è possibile attirare downvotes poiché altri utenti potrebbero visualizzare queste risposte come "spammy". – Kev

+1

Inoltre, la stessa risposta standardizzata in risposta a questa domanda http://stackoverflow.com/questions/6157162 non è correlata alla domanda dell'OP che riguarda il modo in cui collegare i gestori di eventi e non su come simulare il clic su una pagina elemento. Ancora una volta, si prega di prendere più tempo e cura per garantire che la risposta sia pertinente. Grazie. – Kev

+0

Ciao Kev, l'ultimo che ho appena cancellato. Giusto, mi sono entusiasmato. Spesso la domanda era più specifica della soluzione (domanda per simulare un clic, un keydown, ...). Ho pensato che sarebbe ok, dal momento che può gestire più di ciò che è stato richiesto. La cosa che ho fatto è stata effettuare una ricerca per [javascript] + simulare l'evento (se ricordo bene, era notte fonda). Quando una volta cercavo una risposta su come simulare un clic su un link, mi sono imbattuto nella soluzione kangax. Personalmente sono stato molto felice di trovare una soluzione in grado di gestire più di quanto avevo bisogno e rimasto relativamente leggero .. – TweeZz

Problemi correlati