Signatur
Beschreibung
click() löst auf dem Element ein synthetisches click-Event aus. Es ist ein PointerEvent (in älteren Browsern ein MouseEvent) mit bubbles: true und cancelable: true. Das Event steigt also wie ein echter Klick durch den DOM-Baum auf und löst alle registrierten Handler aus. Die Standardaktion läuft ebenfalls ab: Eine Checkbox wird umgeschaltet, ein Link folgt seinem href und ein Submit-Button schickt sein Formular ab.
Typische Einsätze sind:
- ein verstecktes
<input type="file">über einen eigenen, gestalteten Button öffnen, - einen Download über einen per Code erzeugten
<a download>-Link starten, - Tastenkürzel an vorhandene Buttons weiterleiten,
- Klicks in Tests simulieren.
Die Methode ruft die Handler synchron auf: Wenn click() zurückkehrt, sind alle Listener bereits gelaufen. Bei deaktivierten Formular-Elementen (disabled) passiert nichts. Wenn Sie die Event-Eigenschaften selbst festlegen wollen, zum Beispiel Koordinaten oder Zusatztasten, erzeugen Sie stattdessen ein eigenes MouseEvent und senden es mit dispatchEvent().
Rückgabewert
undefined).Beispiele
Verstecktes Datei-Eingabefeld über eigenen Button öffnen
// HTML: <input type="file" id="upload" hidden> <button id="pick">Datei wählen</button>
const fileInput = document.querySelector('#upload');
const pickButton = document.querySelector('#pick');
pickButton.addEventListener('click', () => {
fileInput.click(); // öffnet den Datei-Dialog
});
fileInput.addEventListener('change', () => {
const [file] = fileInput.files;
if (file) console.log(`Ausgewählt: ${file.name}`);
});
Download einer generierten Datei auslösen
const downloadJson = (data, filename) => {
const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' });
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = filename;
document.body.append(link);
link.click();
link.remove();
URL.revokeObjectURL(url);
};
downloadJson({ user: 'anna', score: 42 }, 'export.json');
Synchroner Ablauf und Checkbox umschalten
const checkbox = document.createElement('input');
checkbox.type = 'checkbox';
document.body.append(checkbox);
checkbox.addEventListener('click', (event) => {
console.log('Handler:', event.type, event.bubbles, checked());
});
const checked = () => checkbox.checked;
console.log('vorher:', checkbox.checked);
checkbox.click();
console.log('nachher:', checkbox.checked);
Tastenkürzel an einen Button weiterleiten
const saveButton = document.querySelector('#save');
document.addEventListener('keydown', (event) => {
if ((event.ctrlKey || event.metaKey) && event.key === 's') {
event.preventDefault(); // Browser-Dialog „Seite speichern“ verhindern
saveButton.click();
}
});
// Wichtig · Fallstricke
- Deaktivierte Elemente: Bei
disabled-Formular-Elementen tutclick()nichts. Es wird kein Event ausgelöst und keine Standardaktion ausgeführt. - Nutzer-Aktivierung: Das Öffnen eines Datei-Dialogs (
input type="file") und von Pop-ups funktioniert meist nur, wennclick()während einer echten Nutzer-Aktivierung aufgerufen wird, also etwa in einem Klick-Handler. In einemsetTimeoutnach langer Verzögerung oder nach einemawaitauf eine langsame Anfrage kann der Aufruf blockiert werden. - Keine echten Maus-Events: Es wird nur
clickausgelöst, nichtmousedown,mouseupoderpointerdown. Handler, die sich auf diese Events verlassen, reagieren nicht. Außerdem istevent.isTrustedfalse. - Kein Fokus:
click()setzt keinen Fokus. Rufen Sie bei Bedarf zusätzlichfocus()auf. - Endlosschleifen: Wer
click()im eigenen Klick-Handler desselben Elements oder eines Elternelements aufruft, kann eine Rekursion auslösen. Browser verhindern zwar, dass dasselbe Element während seines eigenen synthetischen Klicks erneut geklickt wird, trotzdem ist Vorsicht geboten. - Kompatibilität: In allen modernen Browsern verfügbar. Ältere Safari-Versionen unterstützten
click()nur auf<input>und<button>, nicht auf beliebigen Elementen. Seit Chrome 92, Firefox 129 und Safari 18.2 ist das Event einPointerEvent, vorher einMouseEvent.