Javascript 我需要使用URL中的锚(#)更新我的页面
index.phpJavascript 我需要使用URL中的锚(#)更新我的页面,javascript,html,ajax,hashchange,Javascript,Html,Ajax,Hashchange,index.php <html> <head> <title>My Title</title> <script type="text/javascript"> function getLink(data) { document.getElementById("box").innerHTML="This is "+data; } </script> </head> <bo
<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>
但它只在用户返回
然后刷新页面
请帮助我如何实现这一点:(检查HTML5历史API。它允许您使用浏览器历史
或者window.onhashchange事件如果你不想使用jQuery如果你打算使用AJAX,除非你的意图是教育性的,否则你真的会考虑使用而不是原始javascript。jQuery现在只是web的一个支柱 如果必须使用这些散列… 使用,并使用
hashchange
事件:
<a href='#home'>Home</a>
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();
};
但是,对于您的场景…
根据提供的代码,在传递函数参数中的值时,根本不需要使用这些值,只需执行以下操作:
<a href="" onClick="getLink('Home');return false;">Home</a><br />
您需要使用
hashchange
事件:
<a href='#home'>Home</a>
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>
我们必须显示想要的页面(消息
此处),因此必须运行hash_changed()
函数
我们第一次在上面声明。为此,我们必须等待DOM就绪或
窗口。onload
使用。可以做的一件事是在DOM就绪上添加对getLink()函数的调用。在DOM就绪上,检查URL并检查最后一个'#'字符后的字符串。如果此字符串不为空,请调用getLink(字符串)亲爱的UR第一方法将在打开任何链接的时候打开同一页,第二种方法将它视为一个URL,因此不会有链接被点击的历史。before@AbarChoudhary-更新了第一个答案。试试看。有一个使用相同的方法。是的,但它能在所有主流浏览器中工作,我是说兼容的浏览器只有HTML4???@AbarChoudhary是的,它适用于所有浏览器以及IE8和更高版本。有趣的是,IE8是第一个引入hashchange
event;)
的浏览器。嗯,最后你给了我解决方案::D--
$('.divLink').click(function(){
$('#box').html("This is "+$(this).id());
}
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();
};
<a href="#home">Home</a>
<a href="#profile">Profile</a>
<a href="#message">Message</a>
<a href="#setting">Setting</a>
http://fiddle.jshell.net/B8C8s/9/show/#message