javascript - 检测 URL 中的后退按钮/哈希更改

标签 javascript ajax navigation fragment-identifier hashchange

我刚刚在 http://ritter.vg 设置了我的新主页。我正在使用 jQuery,但使用量非常少。
它使用 AJAX 加载所有页面 - 我将其设置为允许通过检测 URL 中的哈希值来添加书签。

 //general functions
 function getUrl(u) {
      return u + '.html';
 }
 function loadURL(u)    {
      $.get(getUrl(u), function(r){
                $('#main').html(r);
           }
      );
 }
 //allows bookmarking
 var hash = new String(document.location).indexOf("#");
 if(hash > 0)
 {
      page = new String(document.location).substring(hash + 1);
      if(page.length > 1)
        loadURL(page);
      else
        loadURL('news');
 }
 else
      loadURL('news');

但我无法使后退和前进按钮正常工作。

有没有一种方法可以在不使用 setInterval 循环的情况下检测何时按下后退按钮(或检测何时哈希更改)?当我尝试使用 0.2 秒和 1 秒超时时,它与我的 CPU Hook 。

最佳答案

这里的答案都很旧了。

在 HTML5 世界中,您应该使用 onpopstate事件。

window.onpopstate = function(event)
{
    alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
};

或者:

window.addEventListener('popstate', function(event)
{
    alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
});

后一个代码片段允许存在多个事件处理程序,而前者将替换任何现有的处理程序,这可能会导致难以发现的错误。

关于javascript - 检测 URL 中的后退按钮/哈希更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34330880/

相关文章:

javascript - 如何停止 Onchange 事件重复

javascript - 如何告诉 Chrome,请为每个站点或任何操作使用浏览器中的本地 javascript?类似于 歌剧

python - wxPython 导航面板(如 Finder (Mac OS X)、Nautilus (Ubuntu)、Explorer (Windows 7))

javascript - 未封闭的 SVG 路径似乎已封闭

javascript - MongoDb insert() 正在将 _id 放入我的对象中,但我不想要它们

javascript - 使用 Ajax 生成表单后使用 jQuery 发送表单

javascript - 如何减慢 Ajax 调用速度?

php - 我如何使用 Ajax 和 Jquery 从 PHP 数据库中提取信息,并用该信息填充元素?

html - 如何在页面顶部保留导航栏?

javascript - 实现 NavigationView 时出现问题 - Sc.View 不可观察