Ich versuche einen Klick auf ein Element zu simulieren. HTML für das selbe ist wie folgt
<a id="gift-close" href="javascript:void(0)" class="cart-mask-close p-abs" onclick="_gaq.Push(['_trackEvent','voucher_new','cart',$(this).attr('rel')+'-mask_x_button-inaction']);" rel="coupon"> </a>
Wie kann ich einen Klick simulieren? Ich habe versucht
document.getElementById("gift-close").click();
Aber es tut nichts
JQuery verwenden: $('#gift-close').trigger('click');
Verwendung von JavaScript: document.getElementById('gift-close').click();
Verwenden Sie den hier beschriebenen document.createEvent
https://developer.mozilla.org/en-US/docs/Web/API/document.createEvent
Der Code für die Funktion, die Klick simuliert, sollte in etwa wie folgt aussehen:
function simulateClick() {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var a = document.getElementById("gift-close");
a.dispatchEvent(evt);
}
JQuery verwenden:
$ ('# gift-close'). click ();
Code-Ausschnitt darunter!
Bitte schauen Sie sich diese Dokumentationen und Beispiele unter MDN an, und Sie finden Ihre Antwort. Das ist der richtige Weg, würde ich sagen.
Ereignisse erstellen und auslösen
Entnommen aus dem 'Dispatch Event (Beispiel)' - HTML-Link (Klick simulieren):
function simulateClick() {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var cb = document.getElementById("checkbox");
var canceled = !cb.dispatchEvent(evt);
if(canceled) {
// A handler called preventDefault
alert("canceled");
} else {
// None of the handlers called preventDefault
alert("not canceled");
}
}
So würde ich es machen (2017 ..):
Verwenden Sie einfach MouseEvent .
function simulateClick() { var evt = new MouseEvent("click"); var cb = document.getElementById("checkbox"); var canceled = !cb.dispatchEvent(evt); if (canceled) { // A handler called preventDefault console.log("canceled"); } else { // None of the handlers called preventDefault console.log("not canceled"); } }
document.getElementById("button").onclick = evt => {
simulateClick()
}
function simulateClick() {
var evt = new MouseEvent("click");
var cb = document.getElementById("checkbox");
var canceled = !cb.dispatchEvent(evt);
if (canceled) {
// A handler called preventDefault
console.log("canceled");
} else {
// None of the handlers called preventDefault
console.log("not canceled");
}
}
<input type="checkbox" id="checkbox">
<br>
<br>
<button id="button">Check it out, or not</button>
Der Code, den Sie bereits ausprobiert haben:
document.getElementById("gift-close").click();
... sollte funktionieren, solange das Element zum Zeitpunkt, zu dem Sie es ausführen, tatsächlich im DOM vorhanden ist. Einige Möglichkeiten, um dies sicherzustellen, umfassen:
onload
-Handler für das Fenster aus. http://jsfiddle.net/LKNYg/So:
$(document).ready(function() {
document.getElementById("gift-close").click();
// OR
$("#gift-close")[0].click();
});
Verwenden Sie diesen Code, um zu klicken:
$("#gift-close").click();
Versuchen Sie, eine Funktion innerhalb der click()
-Methode hinzuzufügen.
$('#gift-close').click(function(){
//do something here
});
Es funktionierte für mich mit einer Funktion, die innerhalb der click () -Methode zugewiesen wurde, anstatt sie leer zu lassen.