Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengesan Perubahan URL Selepas Hash dalam JavaScript?

Bagaimanakah Saya Boleh Mengesan Perubahan URL Selepas Hash dalam JavaScript?

Susan Sarandon
Susan Sarandonasal
2024-11-25 05:53:14192semak imbas

How Can I Detect URL Changes After the Hash in JavaScript?

Mengesan Perubahan URL Selepas Cincang dalam JavaScript

Apabila bekerja dengan tapak web berasaskan AJAX seperti GitHub, menentukan sama ada URL telah berubah boleh penting. JavaScript membenarkan kaedah yang berbeza untuk memantau perubahan URL.

Pilihan untuk Mengesan Perubahan URL:

  • Acara onload: Acara ini dijalankan sahaja apabila halaman dimuat semula sepenuhnya, maka ia tidak sesuai untuk mengesan URL separa perubahan.
  • Pengendali Acara URL: JavaScript tidak menyediakan pengendali acara langsung untuk perubahan URL.
  • Semakan URL Biasa: Sentiasa menyemak URL setiap saat mungkin intensif sumber dan tidak praktikal.

Diperbaiki Kaedah: API Navigasi (2024)

Pelayar moden kini menyokong API Navigasi, yang menyediakan cara yang lebih cekap untuk mengesan perubahan URL. Begini cara ia berfungsi:

window.navigation.addEventListener("navigate", (event) => {
  console.log('location changed!');
});

Kaedah Alternatif (API Pra-Navigasi)

Jika API Navigasi tidak tersedia, pendekatan tersuai boleh digunakan menggunakan kod berikut:

(function () {
    let oldPushState = history.pushState;
    history.pushState = function pushState() {
        let ret = oldPushState.apply(this, arguments);
        window.dispatchEvent(new Event('pushstate'));
        window.dispatchEvent(new Event('locationchange'));
        return ret;
    };

    let oldReplaceState = history.replaceState;
    history.replaceState = function replaceState() {
        let ret = oldReplaceState.apply(this, arguments);
        window.dispatchEvent(new Event('replacestate'));
        window.dispatchEvent(new Event('locationchange'));
        return ret;
    };

    window.addEventListener('popstate', () => {
        window.dispatchEvent(new Event('locationchange'));
    });
})();

Penyelesaian ini mengubah suai objek sejarah untuk menambah fungsi, membolehkan penciptaan acara tersuai pendengar, seperti:

window.addEventListener('locationchange', () => {
    console.log('location changed!');
});

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Perubahan URL Selepas Hash dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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 sebelumnya:Perjalanan Reaksi Saya: Hari 4Artikel seterusnya:Perjalanan Reaksi Saya: Hari 4