的index.php
<html>
<head>
<title>My Title</title>
<script type="text/javascript">
function getLink(data) {
document.getElementById("box").innerHTML="This is "+data;
}
</script>
</head>
<body>
<a href="#home" onClick="getLink('Home')">Home</a><br />
<a href="#profile" onClick="getLink('Profile')">Profile</a><br />
<a href="#message" onClick="getLink('Message')">Message</a><br />
<a href="#setting" onClick="getLink('Setting')">Setting</a><br />
<hr />
<div id="box"></div>
</body>
</html>
输出
Home
Profile
Message
Setting
正如代码所示,当我点击任意Div
时我的link
内容已更新,但问题是用户goes back
点击Back Button of Browser
我的Div
内容时{1}}不要改变
我希望用户Goes Back
,Goes Forward
或他直接将路径放在address bar
www.*****/index.php#profile
Div
的内容中应该更改。
注意
我使用document.location.hash
来获取hash
的值,如下所示:
<head>
<script>
var hashValue=document.location.hash;
alert(hashValue);
</script>
</head>
但仅适用于用户goes back
然后refresh the page
Plz帮助我如何实现这一目标:(
答案 0 :(得分:2)
您需要使用hashchange
事件:
function hash_changed() {
var data = document.location.hash.substr(1);
var box = document.getElementById("box");
if (data) {
// inner page
box.innerHTML="This is " + data;
}
else {
// homepage
box.innerHTML = "";
}
}
window.onhashchange = function () {
hash_changed();
};
window.onload = function () {
hash_changed();
};
当您使用hashchange
事件时,还有
无需为您的链接设置onclick
:
<a href="#home">Home</a>
<a href="#profile">Profile</a>
<a href="#message">Message</a>
<a href="#setting">Setting</a>
当用户点击链接时,哈希会自动更改(链接的href
属性),
并且hashchange
事件被解雇了。
点击此处DEMO。
当用户第一次使用哈希来到您的页面时:
http://fiddle.jshell.net/B8C8s/9/show/#message
我们必须在此处显示所需页面(message
),因此我们必须运行hash_changed()
函数
我们第一次在上面声明。为此,我们必须等待DOM ready或window.onload
。
答案 1 :(得分:0)
检查HTML5历史记录API。它允许您使用浏览器历史记录
答案 2 :(得分:0)
$(window).on('hashchange', function() {
alert(location.hash);
});
或window.onhashchange事件,如果您不想使用jQuery
答案 3 :(得分:0)
如果您打算使用AJAX,除非您的意图具有教育意义,否则您真的希望使用jQuery而不是原始javascript。 jQuery现在只是网络的支柱。
如果你必须使用这些哈希......
使用jQuery Special Events,并使用hashchange
事件:
<a href='#home'>Home</a>
脚本:
$(window).on('hashchange', function() {
$('#box').html("This is "+event.fragment);
});
但是,对于您的方案......
您根本不需要使用这些#
值,因为您根据所提供的代码传递函数参数中的值,只需执行以下操作:
<a href="" onClick="getLink('Home');return false;">Home</a><br />
或者(最好是,根据标签使用AJAX),您可以使用jQuery及其内置选择器点击事件,使用Event Listeners:
<a href='javascript:void();' class='divLink' id='home'>Home</a><br/>
脚本很简单:
$('.divLink').click(function(){
$('#box').html("This is "+$(this).id());
}