jquery没有返回url hash

时间:2013-05-11 05:26:36

标签: jquery html

我试图检索当前页面的哈希值但没有成功。我使用这样的链接定位页面;

http://www.mydomain.com/test.html#hash

我的test.html jquery看起来像这样;

$(document).ready(function() {
  if (window.location.hash){
      console.log ("FOUND HASH");
  }else{ 
      console.log ("HASH NOT FOUND");
  }
});

无论我做什么,我都不会得到哈希值;它总是空的“”。但是,当我使用Firebug破解代码并查看DOM时,我可以清楚地看到在window.location.hash下正确设置了哈希值。

我做错了什么?

提前感谢您的帮助。

答案摘要: 事实证明,隐藏我的网址会在整个页面周围创建一个框架包装器,在这种情况下会使用不同的端口。哈希由父框架保留但丢失给子代,并且jquery代码无法访问。使用直接非加载地址产生了正确的行为。

3 个答案:

答案 0 :(得分:1)

哈希位于您的顶级框架/窗口。您的javascript不在顶级窗口中。因此,当您引用window.location.hash时,您正在查看框架的网址,而不是浏览器栏中显示的顶级窗口。

而且,由于您的顶级窗口和内部框架不是同一个域/端口,因此您可能无法在两者之间进行通信。使它们成为相同的域,您可以从顶层窗口获取window.location.hash(浏览器URL栏中显示的内容)。

如果您的域名相同,那么您不会遇到same-origin security restrictions,那么您可以使用以下内容从顶级网址获取哈希值:

window.top.location.hash

仅供参考,顶级窗口中只包含此内容(不是您的javascript所在位置):

<HTML><HEAD>
<META NAME="description" CONTENT="robtune.com">
<META NAME="keywords" CONTENT="">
</HEAD>
<FRAMESET border=0 rows="100%,*" frameborder="no" marginleft=0 margintop=0 marginright=0 marginbottom=0>
<frame src="http://www17.robtune.com:8017/test.html" scrolling=auto frameborder="no" border=0 noresize>
<frame topmargin="0" marginwidth=0 scrolling=no marginheight=0 frameborder="no" border=0 noresize>
</FRAMESET>
</HTML>

答案 1 :(得分:1)

你可以试试这个:

window.parent.location.hash

答案 2 :(得分:0)

你在页面中使用IFRAME并尝试获取哈希吗?

请告诉我们演示网址,以便您快速获得答案。 更新:

您可以使用:

  

window.parent.location.hash获取哈希值。