利用URL中的Hash参数,也就是#开头的标签参数
获取Hash参数的方法:document.location.hash
e.g. http://news.ouc.edu.cn/index.htm#aaa
得到结果是#aaa
<html>
<head>
<script>
function FunctionTagger()
{
this.actions={};//存储作为状态信息的参数
}
//注册需要实现刷新定位的函数
FunctionTagger.prototype.register=function(s,action){
this.actions[s]=action;
}
//处理url的hash信息的函数
FunctionTagger.prototype.toHash=function(s){
var hash=document.location.hash;
hash=hash.slice(1,hash.length);
var arrHash=hash.split(".");
if(hash.length==0)
arrHash=[];
var exist=false;
for(var i=0;i<arrHash.length;i++)
{
if(arrHash[i]==s)
{
exist=true;
break;
}
}
if(!exist)arrHash.push(s);
document.location.hash="#"+arrHash.join(".");
}
function winOnload()
{
var myhash=document.location.hash;
myhash=myhash.slice(1,myhash.length);
myarrHash=myhash.split(".");
if(myhash.length==0)myarrHash=[];
for(var i=0;i<myarrHash.length;i++)
{
ft.actions[myarrHash[i]]();
}
}
if(window.attachEvent)window.attachEvent("onload",winOnload);
else window.addEventListener("load",winOnload,true);
var ft=new FunctionTagger();
ft.register("p1",setp1);
ft.register("p2",setp2);
ft.register("p3",setp3);
function setCont(id,cont)
{
container=document.getElementById(id);
container.innerHTML=cont;
}
function setp1()
{
setCont("p1","here is p1");
ft.toHash("p1");
}
function setp2()
{
setCont("p2","here is p2");
ft.toHash("p2");
}
function setp3()
{
setCont("p3","here is p3");
ft.toHash("p3");
}
</script>
</head>
<body>
<a href="javascript:void(0)" onclick="setp1()">link1</a>
<a href="javascript:void(0)" onclick="setp2()">link2</a>
<a href="javascript:void(0)" onclick="setp3()">link3</a>
<div id="p1">p1</div>
<div id="p2">p2</div>
<div id="p3">p3</div>
</body>
</html>