Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana Mengesan Perubahan URL dalam JavaScript dengan Amanah?

Bagaimana Mengesan Perubahan URL dalam JavaScript dengan Amanah?

Susan Sarandon
Susan Sarandonasal
2024-11-12 09:57:02996semak imbas

How to Reliably Detect URL Changes in JavaScript?

Mengesan Perubahan URL dalam JavaScript

Untuk menjejaki perubahan URL dalam JavaScript, adalah penting untuk mengenal pasti kaedah yang boleh dipercayai. Walaupun acara onload tidak sesuai, terdapat beberapa pilihan yang berdaya maju.

1. Peristiwa Perubahan Cincang:

Acara ini tercetus hanya apabila bahagian URL selepas simbol # berubah. Ia terhad kepada perubahan berkaitan cincang.

2. Acara Popstate:

Acara ini berlaku apabila butang navigasi sejarah penyemak imbas (cth., ke belakang dan ke hadapan) digunakan atau apabila URL berubah melalui kaedah pushState atau replaceState. Walau bagaimanapun, ia mungkin tidak berfungsi dalam semua kes.

3. Acara Perubahan Lokasi Tersuai (Disyorkan):

Untuk memastikan pengesanan perubahan URL yang menyeluruh, pendengar acara tersuai, 'locationchange' boleh dilaksanakan. Ini melibatkan pengubahsuaian objek sejarah untuk mencetuskan peristiwa tersuai untuk semua perubahan keadaan sejarah (iaitu, pushState, replaceState dan popstate).

Pelaksanaan:

// Create a custom locationchange event
window.addEventListener('locationchange', () => {
    console.log('Location changed!');
});

// Modify history object to trigger custom events
(() => {
    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'));
    });
})();

Oleh menggunakan acara tersuai ini, anda boleh mengesan dengan berkesan sebarang perubahan URL, tidak kira sama ada ia berlaku melalui cincang, pushState atau replaceState. Kaedah ini menyediakan penyelesaian yang komprehensif untuk memantau perubahan URL dalam aplikasi JavaScript.

Atas ialah kandungan terperinci Bagaimana Mengesan Perubahan URL dalam JavaScript dengan Amanah?. 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