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

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

我刚在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循环?当我尝试使用.2和1秒超时时,它固定了我的CPU。


千巷猫影
浏览 451回答 3
3回答

慕虎7371278

请改用jQuery hashchange事件插件。关于你的完整ajax导航,尝试有SEO友好ajax。否则,您的页面在具有JavaScript限制的浏览器中不显示任

缥缈止盈

这里的答案都很古老。在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));});后一个片段允许存在多个事件处理程序,而前者将替换任何可能导致难以发现的错误的现有处理程序。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript