2011-10-10 89 views
2

我实际上试图使用户能够为页面添加书签,为此,我使用了javascript的哈希变化事件。这里是我的代码:这里ajax中的哈希变化事件(javascript)

<script type="text/javascript"> 
function hashchk() 
{ 
    hashvalue=window.location.hash; 
    newhash=""; 
    for(var i=1;i<hashvalue.length;i++) 
    { 
     newhash=newhash+hashvalue[i]; 
    } 
    if(hashvalue!="") 
    { 
     window.location.replace("viewme.php?ppid="+newhash); 
    } 
} 
hashchk(); 
</script> 

一切工作不同的是,当用户想要返回到前一页,他必须按浏览器的后退按钮,而2倍不止一次的事实。

如果他在http://www.example.com/abc.php#hello 第1次按下后退按钮,url单独更改为http://www.example.com/abc.php但该页面未加载。

但下一次按它,它来正常。 我希望他们只按一次。提前Thanx。

+1

在URL更改为#hello之前,用户是否首次打开abc.php? –

回答

1

我对你的问题并不完全清楚。如果用户第一次使用散列(如#html3)来访问页面,您似乎试图触发该页面,因此您可以使用服务器上的相应数据来刷新其屏幕。这个问题本身似乎与hashchange事件没有直接关系。

经过测试这个HTML,我相信它可以像你期望的那样工作。无论何时页面加载并且有一个#hash,它都会在查询字符串上重定向它。这也适用于页面刷新。

<script> 
function hashchk() 
{ 
    hashvalue=window.location.hash; 
    if(hashvalue!="") 
    { 
     window.location.replace("viewme.php?ppid="+hashvalue.substring(1)); 
    } 
} 
hashchk(); 
</script>