Heim >Web-Frontend >js-Tutorial >So simulieren Sie Klicks in JavaScript: „click()' vs. „dispatchEvent()'?
Klicks in JavaScript simulieren: Eine Anleitung
Elementklicks mit JavaScript zu simulieren ist eine häufige Aufgabe in der Webentwicklung. Dies kann je nach den Kompatibilitätsanforderungen des Browsers auf verschiedene Weise erreicht werden.
Mit der click()-Methode (nur IE)
Im Internet Explorer können Sie Folgendes verwenden: die click()-Methode direkt auf dem Element, auf dem Sie ein Klickereignis auslösen möchten:
document.getElementById('btn').click();
Verwenden der destroyEvent()-Methode (Modern Browser)
Für moderne Browser können Sie die Methode „dispatchEvent()“ verwenden, um ein benutzerdefiniertes Mausklickereignis zu erstellen und es an das Element zu senden:
var evObj = document.createEvent('MouseEvents'); evObj.initMouseEvent('click', true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null); document.getElementById('btn').dispatchEvent(evObj);
Warum Ihr Code funktioniert nicht
Der in der Frage bereitgestellte Code funktioniert nicht, da der Funktion „simulateClick()“ ein wichtiges Detail fehlt. Für die initMouseEvent()-Methode in der MouseEvents-API müssen die Eigenschaften clientX und clientY festgelegt werden, die die Position des Klicks im Browserfenster angeben.
Überarbeiteter Code
Um das Problem zu beheben, fügen Sie den folgenden Code hinzu, um die Eigenschaften „clientX“ und „clientY“ festzulegen:
evObj.clientX = 0; evObj.clientY = 0;
Der aktualisierte Code sieht folgendermaßen aus dies:
function simulateClick(control) { if (document.all) { control.click(); } else { var evObj = document.createEvent('MouseEvents'); evObj.initMouseEvent('click', true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null); evObj.clientX = 0; evObj.clientY = 0; control.dispatchEvent(evObj); } }
Dies sollte nun erfolgreich einen Klick auf das Element mit der ID „mytest1“ simulieren.
Das obige ist der detaillierte Inhalt vonSo simulieren Sie Klicks in JavaScript: „click()' vs. „dispatchEvent()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!