2010-05-23 22 views
7

Ist es möglich, einen Klick auf eine Webseite mit Javascript zu simulieren, aber ohne ein bestimmtes Element zu definieren, sondern nur das Dokument zu spezifizieren?Simulieren Klicken mit Javascript auf Dokument

Ich würde so etwas zu tun haben will, und wenn der Standort eine Verbindung haben, geschieht, dann werden diese gedrückt werden:

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); 
} 

Antwort

5

window.dispatchEvent sollte den Trick tun.

<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> 

Oder ... mit extra Mausevents Informationen:

<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> 

Die obigen Beispiele einen Klick zu simulierenden auf window verursachen wird, wenn die button geklickt wird. Ein Ereignis-Listener wird zu window zu alert hinzugefügt, wenn Sie darauf klicken. Daher wird durch Klicken auf button indirekt ein alert ausgelöst.

Weitere Informationen: http://www.howtocreate.co.uk/tutorials/javascript/domevents

+0

Ich möchte in der Lage sein, die Koordinaten des Ereignisses zu geben, so dass dies programmatisch ein externes Framework genannt werden kann. – Charlie

+0

Hey, habe gerade ein weiteres Beispiel mit 'MouseEvents'-spezifischen Daten hinzugefügt. –

+0

Das ist besser :-) Was ist der 'addEventListener' für? – Charlie

0

Falls jemand Bumps in dieser Suche einen Rahmen Agnostiker Weg, um alle HTML und Maus-Ereignis ausgelöst (und einige Optionen eingestellt, falls erforderlich), einen Blick hier: How to simulate a mouse click using JavaScript?

+1

In der letzten Stunde haben wir festgestellt, dass Sie dieselbe Antwort auf eine Reihe von Fragen gepostet haben. Während wir Ihre Bemühungen schätzen, zu der Lösung zu gelangen, die Sie beschreiben, wäre es hilfreicher, wenn Sie Ihre Antworten auf das spezifische Problem des OPs schreiben könnten, anstatt dieselbe Antwort zu verfassen. Wenn Sie dies nicht tun, kann dies zu Downvotes führen, da andere Benutzer diese Antworten möglicherweise als "Spam" ansehen. – Kev

+1

Darüber hinaus ist die gleiche Antwort Antwort auf diese Frage http://StackOverflow.com/Questions/6157162 nicht mit der Frage des OP, die sich darauf bezieht, wie Ereignishandler anschließen und nicht zum Simulieren des Klickens auf eine Seite Element. Bitte nehmen Sie sich mehr Zeit und Sorgfalt, um sicherzustellen, dass Ihre Antwort relevant ist. Vielen Dank. – Kev

+0

Hallo Kev, das letzte habe ich gerade gelöscht. Richtig du bist, ich war begeistert. Oft war die Frage spezifischer als die Lösung (Frage, um einen Klick zu simulieren, Keydown, ...). Ich dachte, das wäre in Ordnung, da es mehr als das, was angefordert wurde, verarbeiten kann. Die Sache, die ich tat, war eine Suche nach [javascript] + simulieren Ereignis (wenn ich mich richtig erinnere, war es spät in der Nacht). Als ich einmal nach einer Antwort suchte, wie man einen Klick auf einen Link simuliert, stieß ich auf Kangax-Lösung. Persönlich war ich sehr glücklich, eine Lösung zu finden, die mehr als ich brauchte und blieb relativ leicht. – TweeZz