代码之家  ›  专栏  ›  技术社区  ›  user3390251

URL参数更改时的侦听器事件

  •  9
  • user3390251  · 技术社区  · 7 年前

    我有一个带有分页和过滤器的单页应用程序,需要检测当前URL何时发生变化。有没有一种简单的方法可以将侦听器添加到当前URL并在其更改时触发某些内容?(也没有设置间隔!)

    1. 用户登陆www.foobar。通用域名格式
    2. 用户执行操作时,url将更改为www.foobar。通用域名格式?过滤器=你好
    3. 我的函数运行

    我在HashChange和unbeforeunload上都试过了,两者都与此无关。

    window.onbeforeunload = function(e) {
       alert ('url changed!');
    };
    
    window.onhashchange = function() { 
    alert ('url changed!');  
    }
    

    有没有一种方法可以将侦听器添加到URL,并在URL发生任何更改时触发某些内容?(同样,单页应用程序无需刷新)

    1 回复  |  直到 7 年前
        1
  •  8
  •   klugjo    7 年前

    如果不想使用setInterval,可以重写 history.pushState 事件:

    (function(history){
        const pushState = history.pushState;
        history.pushState = function(state) {
            if (typeof history.onpushstate == "function") {
                history.onpushstate({state: state});
            }
            // Call your custom function here
            return pushState.apply(history, arguments);
        }
    })(window.history);