保存javascript运行状态

利用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 >p3</div>

</body>

</html>