I'm hanya bertanya-tanya bagaimana saya dapat menggunakan JavaScript untuk mensimulasikan klik pada elemen.
Saat ini yang saya punya:
<script type="text/javascript">
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 );
control.dispatchEvent(evObj);
}
}
</script>
<a href="http://www.google.com" id="mytest1">test 1</a><br>
<script type="text/javascript">
simulateClick(document.getElementById('mytest1'));
</script>
Tapi itu's tidak bekerja :(
Ada ide?
Berikut ini's apa yang saya dimasak. It's cukup sederhana, tetapi bekerja:
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('Events');
evObj.initEvent(etype, true, false);
el.dispatchEvent(evObj);
}
}
Penggunaan:
eventFire(document.getElementById('mytest1'), 'click');
Bagaimana sesuatu yang sederhana seperti:
document.getElementById('elementID').click();
Mendukung bahkan oleh IE.
var elem = document.getElementById('mytest1');
// Simulate clicking on the specified element.
triggerEvent( elem, 'click' );
/**
* Trigger the specified event on the specified element.
* @param {Object} elem the target element.
* @param {String} event the type of the event (e.g. 'click').
*/
function triggerEvent( elem, event ) {
var clickEvent = new Event( event ); // Create the event.
elem.dispatchEvent( clickEvent ); // Dispatch the event.
}
Atas jawaban yang terbaik! Namun, hal itu tidak memicu peristiwa mouse untuk saya di Firefox ketika etype = 'klik'
.
Jadi, saya mengubah dokumen.createEvent
ke 'MouseEvents'
dan yang tetap masalah. Tambahan kode ini adalah untuk menguji apakah atau tidak sedikit lain dari kode mengganggu acara tersebut, dan jika itu dibatalkan aku akan log yang ke konsol.
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('MouseEvents');
evObj.initEvent(etype, true, false);
var canceled = !el.dispatchEvent(evObj);
if (canceled) {
// A handler called preventDefault.
console.log("automatic click canceled");
} else {
// None of the handlers called preventDefault.
}
}
}