Rumah >hujung hadapan web >tutorial js >Bagaimanakah Kami Boleh Mengesan Penekanan Butang Belakang Penyemak Imbas dengan Amanah dan Membezakannya daripada Tindakan Butang Belakang Dalam Halaman?
Menentukan sama ada pengguna telah menekan butang belakang penyemak imbas menimbulkan cabaran . Ramai yang mencadangkan menggunakan fungsi window.onhashchange, tetapi ia juga bertindak balas kepada butang belakang dalam halaman, yang menjejaskan pengalaman pengguna.
Untuk aplikasi satu halaman menggunakan navigasi cincang, adalah penting untuk mengawal tingkah laku butang belakang dalam halaman. Untuk berbuat demikian, gunakan tatasusunan (window.location.lasthash) untuk menyimpan cincangan sebelumnya semasa pengguna menavigasi antara muka.
Kaedah konvensional seperti window.onbeforeunload dan window.onmousedown terbukti tidak berkesan untuk membezakan klik butang belakang pelayar. Sebaliknya, pembolehubah bendera yang ditogol oleh onmouseover dokumen (apabila tetikus melayang di atas dokumen) dan onmouseleave (apabila tetikus keluar dari dokumen) telah dicipta.
Ubah suai window.onhashchange untuk memasukkan logik ini:
window.onhashchange = function() { if (window.innerDocClick) { // In-page mechanism triggered the hash change } else { if (window.location.hash != '#undefined') { // Browser back button clicked goBack(); } } }
Untuk mengelakkan ruang belakang daripada mencetuskan peristiwa butang belakang, laksanakan skrip berikut:
$(function(){ var rx = /INPUT|SELECT|TEXTAREA/i; $(document).bind("keydown keypress", function(e){ if( e.which == 8 ){ // 8 == backspace if(!rx.test(e.target.tagName) || e.target.disabled || e.target.readOnly ){ e.preventDefault(); } } }); });
Ringkasnya, dengan menggunakan peristiwa lekap dokumen, seseorang boleh membezakan dengan berkesan antara klik butang belakang penyemak imbas dan penggunaan butang belakang dalam halaman, membolehkan kawalan tepat kefungsian butang belakang.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mengesan Penekanan Butang Belakang Penyemak Imbas dengan Amanah dan Membezakannya daripada Tindakan Butang Belakang Dalam Halaman?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!