4

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

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 代码无法访问。使用直接未加载的地址会产生正确的行为。

4

3 回答 3

1

哈希在您的顶级框架/窗口上。您的 javascript 不在该顶级窗口中。因此,当您提到 时window.location.hash,您正在查看框架的 URL,而不是显示在浏览器栏中的顶级窗口。

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

如果您的域相同,因此您不会遇到同源安全限制,那么您可以使用以下命令从顶级 URL 获取哈希:

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>
于 2013-05-11T06:04:46.153 回答
1

你可以试试这个:

window.parent.location.hash
于 2013-05-11T06:07:44.467 回答
0

您是否在页面中使用 IFRAME 并尝试获取哈希?

并请给我们演示 URL,以便它帮助您快速获得答案。更新 :

您可以使用 :

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

于 2013-05-11T05:44:20.180 回答