更改地址栏中的锚点(location.hash)

时间:2011-10-11 20:13:08

标签: api iframe facebook-iframe

我有一个FB应用程序,它使用锚点(document.location.hash)在不同的元素上设置标记(例如当前的TAB#,显示的组#)。 因此,每当用户更改这些元素时,我都会更改锚点(location.hash)并添加#tag = ... 到地址栏中的URL(当用户复制链接并将其发送给另一个用户时),他被重定向到特定视图(在同一页面上)。

当应用程序是独立站点时,它运行良好。 但是当我把它放在FB应用程序(apps.facebook.com/myapp)下时 - 它不会更改地址栏中的URL(但是当我读取document.location.has时,我看到了更改)。我想也许是因为我的应用程序在IFRAME中。 如果无法修复,可能有一个Facebook API可以更改URL中的哈希部分!!!

1 个答案:

答案 0 :(得分:0)

如果父框架的location对象的部分来自不同的域,则无法更改它的部分...您只能通过将其设置为新值来更改整个位置:

window.top.location = 'http://example.com';

实际上document.location总是引用当前文档,而window.location引用顶级文档,表示用户在浏览器地址栏中看到的URL。

所以一般你改变了当前文档的哈希值,如果它是作为独立站点用户打开的,那么用户在地址栏中看到它,但是一旦在框架中运行(应用程序画布),用户就看不到该页面的URL,而是父框架位于其他域名和跨域政策主题。