我需要使用URL中的锚点(#)更新我的页面
I need to update my page using Anchor (#) in URL
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
这是主页
正如代码所说,当我单击任何link
时,我的Div
内容都会更新,但问题是当用户goes back
单击Back Button of Browser
时,我Div
的内容不会更改
我希望用户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帮助我如何实现这一点:(
您需要使用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
属性(,并且CCD_ 23事件被激发。
点击此处查看演示。
第一次
当用户第一次带着哈希来到你的页面时:
http://fiddle.jshell.net/B8C8s/9/show/#message
我们必须显示所需的页面(此处为message
(,因此我们必须运行hash_changed()
函数我们第一时间声明。为此,我们必须等待DOM就绪或window.onload
。
查看HTML5历史API。它允许您使用浏览器历史
HTML5历史api
$(window).on('hashchange', function() {
alert(location.hash);
});
或者window.onhashchange事件,如果您不想使用jQuery
如果你要使用AJAX,你会非常想使用jQuery而不是原始javascript,除非你的意图是教育性的。jQuery现在只是web的支柱。
如果必须使用这些哈希
使用jQuery特殊事件,并使用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及其内置的选择器点击事件,这些事件使用事件监听器:
<a href='javascript:void();' class='divLink' id='home'>Home</a><br/>
脚本就是这么简单:
$('.divLink').click(function(){
$('#box').html("This is "+$(this).id());
}
- Angular没有根据模型更新我的选择元素
- 如何使用ng repeat中的选定输入更新我的对象
- 如何在 D3 中更新我的多折线图数据
- 如何使用javascript异步更新我的内容
- knockout.js获胜't更新我的foreach绑定,尽管更改已注册
- 如何在不按ctrl+F5的情况下更新我的Web应用程序(chrome、mozilla、IE8+)更改
- 为什么'这些AJAX调用正在更新我的变量
- 如何使用错误消息或成功消息动态更新我的跨度
- 我想听听服务器上的更改,并相应地更新我的网页.我如何用Javascript做到这一点
- Angular没有't在http请求后更新我的对象
- $apply在angularJs中没有更新我的范围变量
- ng模型没有更新我的对象值
- 如何根据用户选择更新我的税款
- Javascript:如何更新我的事件侦听器,使其仅在用户停止键入时进行更改
- 如何在 d3.js 中更新我的图形图例
- Angular ngClass 没有更新我的类,即使我的条件按预期发生了变化
- 为什么挖空不会更新我的文本框中的值
- 如何动态更新我的对象
- Javascript:如何动态更新我的闭包
- 指令不更新我的范围