我试图检索当前页面的哈希值,但没有成功.我用这样的链接定位页面;
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代码无法访问.使用直接非加载地址产生了正确的行为.
最佳答案 哈希位于您的顶级框架/窗口.您的javascript不在顶级窗口中.因此,当您引用window.location.hash时,您正在查看框架的URL,而不是浏览器栏中显示的顶级窗口.
而且,由于您的顶级窗口和内部框架不是同一个域/端口,因此您可能无法在两者之间进行通信.使它们成为相同的域,您可以从顶层窗口获取window.location.hash(浏览器URL栏中显示的内容).
如果你的域名是相同的,所以你没有遇到same-origin security restrictions,那么你可以从顶级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>