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?

Bagaimanakah Kami Boleh Mengesan Penekanan Butang Belakang Penyemak Imbas dengan Amanah dan Membezakannya daripada Tindakan Butang Belakang Dalam Halaman?

Susan Sarandon
Lepaskan: 2024-12-10 18:19:15
asal
638 orang telah melayarinya

How Can We Reliably Detect Browser Back Button Presses and Differentiate Them from In-Page Back Button Actions?

Melaksanakan Pengesanan Butang Belakang Penyemak Imbas Silang

Mengesan Acara Tekan Butang Belakang

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.

Mengurus Fungsi Butang Belakang Dalam Halaman

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.

Membezakan Butang Belakang Penyemak Imbas daripada Butang Belakang Dalam Halaman

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.

Menggunakan Mekanisme Pengesanan

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

Mencegah Ruang belakang daripada Meniru Butang Belakang

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

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!

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