2011-10-11 88 views
0

我有一個FB應用程序使用錨(document.location.hash)在不同元素上設置標籤(例如當前TAB#,組#被展示...)。 因此,無論用戶何時更改這些元素,我都會更改錨點(location.hash),並將#tag = ... 添加到地址欄中的URL中(並且當用戶複製鏈接並將其發送給其他用戶時)他被重定向到特定的視圖(在同一頁上)。更改地址欄中的錨(location.hash)

當應用程序是獨立站點時,它運行良好。 但是,當我把它放在FB應用程序(apps.facebook.com/myapp)下 - 它不會更改地址欄中的URL(但是當我讀取document.location.has時,我看到了更改)。我想也許這是因爲我的應用程序在IFRAME中。 如果它不能被修復,也許有一個Facebook API改變URL中的哈希部分!

回答

0

這是不可能的,如果它是從不同的域提供改變父框架location對象的部分...您只能將其設置爲新值改變整個位置:

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

其實document.location總是指當前文檔,而window.location指的是頂級文檔,代表用戶在瀏覽器的地址欄中看到的URL。

因此,通常您更改了當前文檔的散列,並且如果它是以獨立網站用戶在地址欄中看到的方式打開的,但是一旦在框架中運行(應用程序畫布),用戶看不到該頁面的URL,但是父框架它位於其他域和跨域策略的主題上。