Saya memiliki handler yang melekat pada suatu peristiwa dan saya ingin itu dijalankan hanya jika dipicu oleh manusia, dan bukan oleh metode pemicu (). Bagaimana saya membedakannya?
Sebagai contoh,
$('.checkbox').change(function(e){
if (e.isHuman())
{
alert ('human');
}
});
$('.checkbox').trigger('change'); //doesn't alert
javascript
jquery
Dziamid
sumber
sumber
:)
event.isTrigger
originalEvent
ketika acara dipicu olehDOM.click()
, tetapi Anda dapat menggunakan$($("#try")[0]).click();
, yang kikuk, tetapi berfungsi.Lebih lurus daripada di atas adalah:
sumber
isTrigger
ke API publik saat ini .Saya pikir satu-satunya cara untuk melakukan ini adalah dengan memasukkan parameter tambahan pada
trigger
panggilan sesuai dokumentasi .Contoh: http://jsfiddle.net/wG2KY/
sumber
Jawaban yang diterima tidak berhasil untuk saya. Sudah 6 tahun dan jQuery telah banyak berubah sejak saat itu.
Misalnya
event.originalEvent
kembali selalutrue
dengan jQuery 1.9.x. Maksud saya objek selalu ada tetapi konten berbeda.Mereka yang menggunakan versi jQuery yang lebih baru dapat mencoba yang ini. Bekerja di Chrome, Edge, IE, Opera, FF
sumber
Saat ini sebagian besar browser mendukung event.isTrusted :
Dari dokumen :
sumber
Anda dapat menggunakan onmousedown untuk mendeteksi panggilan klik vs pemicu ().
sumber
Saya akan memikirkan kemungkinan di mana Anda memeriksa posisi mouse, seperti:
sumber
Jika Anda memiliki kendali atas semua kode Anda, tidak ada panggilan asing
$(input).focus()
selainsetFocus()
.Menggunakan variabel global adalah cara yang benar bagi saya.
Jika beberapa alien masih ingin menelepon
$(input).focus()
dari planet lain. Semoga beruntung atau periksa jawaban lainsumber
setFocus()
- itu tidak mencegah orang memicu acara fokus. Tidak menulissetFocus()
sama sekali juga akan mencegah orang menyebutnya, jadi saya tidak melihat manfaatnya. Bahkan, orang masih bisa menelepon$('input').focus()
dan meneruskannya.(function(){/*your code here*/})();
lingkup seperti ini: Ini akan membuat fungsi setFocus aman dari pemanggilan dan boolean agar tidak diubah oleh skrip luar.