【问题标题】:How can I trigger on URL change in jQuery?如何触发 jQuery 中的 URL 更改?
【发布时间】:2021-11-18 16:30:53
【问题描述】:

如何在 URL 更改时触发函数?我尝试类似:

$(windows.location).change(function(){
   //execute code
});

所以我的 URL 类似于 http://www.mysite.com/index.html#/page/1。当 URL 变成 http://www.mysite.com/index.html#/page/2 之类的东西时,我如何执行 jQuery 或 JavaScript 代码?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

那将是一个hashchange 事件,所以我建议:

$(window).on('hashchange', function(e){
    // do something...
});

JS Fiddle demo.

参考资料:

【讨论】:

  • Uncaught TypeError: Object # has no method 'on' 我认为出现此错误是因为我的 URL 类似于 index.php#/page/1
  • 您使用的是什么版本的 jQuery? on() 可从 1.7+ 版本开始使用,早于该版本的版本应使用 delegate(),但没有更多信息我不能说。
【解决方案2】:

试试 hashchange 事件,它正是为此而构建的 - http://benalman.com/projects/jquery-hashchange-plugin/

【讨论】:

    【解决方案3】:

    您也可以尝试使用http://www.asual.com/jquery/address/

    $(function(){
        $.address.strict(false);
    
        $.address.internalChange(function(e) {
            // do something here
        });
    });
    

    【讨论】:

      【解决方案4】:
      var current_href = location.href;
      setInterval(function(){
          if(current_href !== location.href){
              // if changed Do ...
              current_href = location.href;
          }else{
              // Do ...
          }
      },500);
      

      这对我有用^^

      $(window).on('hashchange') // 不触发

      【讨论】:

        【解决方案5】:

        仅检测用于流行的 URL 更改

        window.onpopstate = 函数(事件){ //enter code here }

        【讨论】:

          猜你喜欢
          • 2010-10-09
          • 1970-01-01
          • 2016-07-20
          • 2013-02-12
          • 1970-01-01
          • 2018-08-15
          • 2011-05-13
          • 2021-08-06
          • 2013-10-24
          相关资源
          最近更新 更多