изменить якорь (location.hash) в адресной строке - PullRequest
0 голосов
/ 12 октября 2011

У меня есть приложение FB, которое использует якорь (document.location.hash) для установки тегов на различные элементы (например, текущий TAB #, группа #, которая отображается ...). Поэтому, когда пользователь изменяет эти элементы, я меняю якорь (location.hash), и он добавляет #tag = ... на URL-адрес в адресной строке (и когда пользователь копирует ссылку и отправляет ее другому пользователю), он перенаправляется в конкретное представление (на той же странице).

Хорошо работает, когда приложение представляет собой автономный сайт. Но когда я помещаю его в приложение FB (apps.facebook.com/myapp) - он не меняет URL в адресной строке (но когда я читаю document.location.has я вижу изменения). Я думаю, может быть, это потому, что мое приложение находится внутри IFRAME. Если это не может быть исправлено, возможно, существует API-интерфейс Facebook, который изменяет часть хеша в URL-адресе !!!

1 Ответ

0 голосов
/ 02 мая 2012

Невозможно изменить части location объекта родительского фрейма, если он обслуживается из другого домена ... Вы можете изменить только целое местоположение, установив для него новое значение:

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

На самом деле document.location всегда относится к текущему документу, в то время как window.location относится к документу верхнего уровня и представляет URL-адрес, который пользователь видит в адресной строке браузера.

Таким образом, в общем случае вы изменили хэш для текущего документа иесли он открыт как автономный сайт, пользователь видит его в адресной строке, но, запустив его во фрейме (холсте приложения), пользователь видит не URL-адрес этой страницы, а родительский фрейм, расположенный в другом домене и являющийся объектом междоменной политики.

...