所以说我在进行ajax调用时设置哈希:
示例:http://example.com/#hash.html
如果我加载另一个页面并单击后退按钮,我将如何检测哈希并在加载时提取网址? 其余的我已经涵盖了:)。
如果您需要更多代码,请告诉我。顺便说一下,我正在使用jquery。
答案 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>