javascript - 使用JavaScript怎么能检查带#hash的URL?

  显示原文与译文双语对照的内容

我有一些 jQuery JavaScript代码,只有在URL中有散列( δ # ) 锚点链接时才会运行。 如何使用JavaScript检查这里字符? 我需要一个简单的catch-all测试来检测这样的url:

  • example.com/page.html#anchor
  • example.com/page.html#anotheranchor

基本上是沿着下面的线条:


if (thereIsAHashInTheUrl) { 
 do this;
} else {
 do this;
}

如果有人能向我指出正确的方向,那将是非常重要的。

时间:


<script>
 if(window.location.hash) {
 var hash = window.location.hash.substring(1);//Puts hash in variable, and removes the # character
 alert (hash);
//hash found
 } else {
//No hash found
 }
</script>

放置以下内容:


<script type="text/javascript">
 if (location.href.indexOf("#")!= -1) {
//Your code in here accessing the string like this
//location.href.substr(location.href.indexOf("#"))
 }
</script>

如果该URI不是该代码段的位置,该代码段将执行你想要的操作。


var url = 'example.com/page.html#anchor',
 hash = url.split('#')[1];

if (hash) {
 alert(hash)
} else {
//do something else
}


$('#myanchor').click(function(){
 window.location.hash ="myanchor";//set hash
 return false;//disables browser anchor jump behavior
});
$(window).bind('hashchange', function () {//detect hash change
 var hash = window.location.hash.slice(1);//hash to string (="myanchor")
//do sth here, hell yeah!
});

这将解决问题;

这是你可以做的,定期检查散列的变化,然后调用一个函数来处理哈希值。


var hash = false; 
checkHash();

function checkHash(){ 
 if(window.location.hash!= hash) { 
 hash = window.location.hash; 
 processHash(hash); 
 } t=setTimeout("checkHash()",400); 
}

function processHash(hash){
 alert(hash);
}

...