Saya mencoba membuat halaman untuk pergi ke halaman awal setelah mis. 10 detik tidak aktif (pengguna tidak mengklik di mana pun). Saya menggunakan jQuery untuk sisanya tetapi set / clear dalam fungsi pengujian saya adalah javascript murni.
Dalam rasa frustrasi saya, saya berakhir dengan sesuatu seperti fungsi ini yang saya harap dapat saya panggil pada setiap klik di halaman. Pengatur waktu mulai dengan baik, tetapi tidak diatur ulang dengan sekali klik. Jika fungsi dipanggil 5 kali dalam 10 detik pertama, maka 5 peringatan akan muncul ... tidak ada clearTimeout ...
function endAndStartTimer() {
window.clearTimeout(timer);
var timer;
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
}
Adakah yang punya beberapa baris kode yang akan melakukan trik? - pada setiap klik berhenti, setel ulang dan mulai pengatur waktu. - Saat timer mencapai mis. 10sec melakukan sesuatu.
sumber
Masalahnya adalah
timer
variabel tersebut bersifat lokal, dan nilainya hilang setelah setiap pemanggilan fungsi.Anda perlu mempertahankannya, Anda dapat meletakkannya di luar fungsi, atau jika Anda tidak ingin mengekspos variabel sebagai global, Anda dapat menyimpannya di closure , misalnya:
sumber
Itu karena timer adalah variabel lokal untuk fungsi Anda.
Coba buat di luar fungsi.
sumber
Cara untuk menggunakan ini dalam bereaksi:
Bermanfaat jika Anda hanya ingin memanggil API setelah pengguna berhenti mengetik misalnya. Fungsi userTimeout dapat diikat melalui onKeyUp ke sebuah masukan.
sumber
Tidak yakin apakah ini melanggar beberapa aturan pengkodean praktik yang baik tetapi saya biasanya keluar dengan yang ini:
Ini mencegah kebutuhan untuk menyatakan timer keluar dari fungsi.
EDIT: ini juga tidak mendeklarasikan variabel baru di setiap pemanggilan, tetapi selalu mendaur ulang sama.
Semoga ini membantu.
sumber
Ini bekerja dengan baik. Ini adalah manajer yang saya buat untuk menangani acara-acara. Memiliki acara untuk ditahan, dan saat Anda melepaskannya.
Parameter elemen adalah yang Anda pegang. Parameter func aktif saat ditahan selama beberapa milidetik yang ditentukan oleh parameter tahan. Parameter clearfunc adalah opsional dan jika diberikan, itu akan diaktifkan jika pengguna melepaskan atau meninggalkan elemen. Anda juga dapat melakukan beberapa solusi untuk mendapatkan fitur yang Anda inginkan. Nikmati! :)
sumber
Contoh Praktis Menggunakan Jquery untuk Menu Dropdown! Saat mengarahkan mouse ke #IconLoggedinUxExternal, tampilkan div # ExternalMenuLogin dan setel waktu untuk menyembunyikan div # ExternalMenuLogin
Di atas mouse di div # ExternalMenuLogin itu membatalkan batas waktu. Saat mouse keluar pada div # ExternalMenuLogin itu mengatur batas waktu.
Intinya di sini adalah selalu memanggil clearTimeout sebelum menyetel batas waktu, dengan demikian, menghindari panggilan ganda
sumber