Rumah > hujung hadapan web > tutorial js > Cara Mensimulasikan Klik dalam JavaScript: `click()` lwn. `dispatchEvent()`?

Cara Mensimulasikan Klik dalam JavaScript: `click()` lwn. `dispatchEvent()`?

Mary-Kate Olsen
Lepaskan: 2024-12-04 06:30:15
asal
680 orang telah melayarinya

How to Simulate Clicks in JavaScript: `click()` vs. `dispatchEvent()`?

Simulasi Klik dalam JavaScript: Panduan

Simulasi klik elemen menggunakan JavaScript ialah tugas biasa dalam pembangunan web. Ini boleh dicapai dalam pelbagai cara, bergantung pada keperluan keserasian penyemak imbas.

Menggunakan Kaedah klik() (IE Sahaja)

Dalam Internet Explorer, anda boleh menggunakan kaedah klik() terus pada elemen yang anda ingin cetuskan acara klik pada:

document.getElementById('btn').click();
Salin selepas log masuk

Menggunakan Kaedah dispatchEvent() (Pelayar Moden)

Untuk penyemak imbas moden, anda boleh menggunakan kaedah dispatchEvent() untuk mencipta acara klik tetikus tersuai dan menghantarnya ke elemen:

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);
Salin selepas log masuk

Mengapa Kod Anda Tidak Berfungsi

Kod yang diberikan dalam soalan ialah tidak berfungsi kerana fungsi simulateClick() tiada butiran penting. Kaedah initMouseEvent() dalam MouseEvents API memerlukan sifat clientX dan clientY ditetapkan, yang menentukan kedudukan klik dalam tetingkap penyemak imbas.

Kod Disemak

Untuk menyelesaikan isu, tambah kod berikut untuk menetapkan sifat clientX dan clientY:

evObj.clientX = 0;
evObj.clientY = 0;
Salin selepas log masuk

Kod yang dikemas kini akan kelihatan seperti ini:

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);
  }
}
Salin selepas log masuk

Ini seharusnya berjaya mensimulasikan klik pada elemen dengan ID 'mytest1'.

Atas ialah kandungan terperinci Cara Mensimulasikan Klik dalam JavaScript: `click()` lwn. `dispatchEvent()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan