在页面加载时获取ajax哈希url

时间:2011-04-07 01:33:14

标签: jquery ajax hash onload back-button

所以说我在进行ajax调用时设置哈希:

示例:http://example.com/#hash.html

如果我加载另一个页面并单击后退按钮,我将如何检测哈希并在加载时提取网址? 其余的我已经涵盖了:)。

如果您需要更多代码,请告诉我。顺便说一下,我正在使用jquery。

4 个答案:

答案 0 :(得分:5)

你有几个选择。

最明显的是

window.location.hash;

...多年来一直是实际JavaScript的一部分(more information here或通过谷歌搜索“javascript location hash”)。

还有一个名为jQuery.Url的jQuery插件,它有很多很好的功能来处理URL。

答案 1 :(得分:3)

有一个事件,hashchange,但它只在Firefox 3.6,IE8中支持,我假设最新的Chromes和Safaris。

要获得最佳支持,请检测hashchange事件,如果不存在,请使用setInterval()的轮询功能。

所以你会做点像......

(function() { 

   var hash = window.location.hash;

   if ('onhashchange' in window) {
      window.onhashchange = hashChanged;
   } else {
      setInterval(function() {
         if (window.location.hash != hash) {
             hash = window.location.hash;
             hashChanged();
         }
      }, 500);
   }

   var hashChanged = function() {
     alert('Hash has changed!');
   };

})();

答案 2 :(得分:0)

$(function() {
   var page = window.location.hash;
   if (page == "") page = "somedefaultpage.html";
   $("#content").load(page);
});

如果您已正确连接导航,则加载到内容元素中的页面应已存在,因为浏览器必须导航到#hash

答案 3 :(得分:0)

使用window.location.hash在来回导航时加载url中相应的哈希内容的简单示例。

希望这有助于某人......干杯!

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
    a{
        text-decoration: none;
        color:#999;
        font: arial;
    }
    .content{
        width: 50%;
        height: 30px;
        border:1px solid darkorange;
        padding: 3%;color:#999;
    }
</style>


<body>
<div class="box">
<a id="hash1" href="">Add Hash1</a>
<a id="hash2" href="">Add Hash2</a>
</div>
<div class="content"></div>
<script src="jquery-1.11.3.min.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
    $(".box a").click(function(e) {
        window.location.hash = $(this).attr("id");
        e.preventDefault();
    });
$(window).on('hashchange', function() {
  if (location.hash === '#hash1') {
    $("div.content").html('Hash one added!');
  }
  if (location.hash === '#hash2') {
    $("div.content").html('Hash two added!');
  }
  if (location.hash === '') {
    $("div.content").html('');
  }
});
});
</script>
</body>
</html>