Изменить URL-адрес с Javascript, как это делает Facebook - PullRequest
4 голосов
/ 05 мая 2011

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

В последние недели я вижу разные подходы, включающие использование хеша (#) и разных JS-фреймворков.

В документации указано, что изменение URL браузера из JS невозможно. Сегодня я зашел на Facebook и открыл изображение, а URL-адрес изменился (хотя изображение было открыто в лайтбоксе). После закрытия изображения URL-адрес браузера изменился на исходную страницу.

Ты хоть представляешь, как они добиваются такого поведения?

Ответы [ 3 ]

8 голосов
/ 20 июля 2011

В HTML5 есть функция, которая поддерживает то, на что вы ссылаетесь. Смотри http://spoiledmilk.dk/blog/html5-changing-the-browser-url-without-refreshing-page.

Некоторые системы реализуют это, проверяя window.history.pushState и, если это так, используют его, в противном случае возвращаясь к хэштегам. Если SEO вызывает беспокойство, используйте #! вместо #. Увидеть http://code.google.com/intl/es/web/ajaxcrawling/docs/getting-started.html.

Надеюсь, это поможет.

1 голос
/ 05 мая 2011

Вы можете манипулировать значением has в конце URL-адреса следующим образом:

var hashVal = 'somevalue';
window.location.hash = '#' + hashVal;

И тогда URL станет www.something.com/#somevalue

0 голосов
/ 05 мая 2011

Вы можете манипулировать значением хеша, как указал Нил. Но я бы порекомендовал использовать библиотеку для того же. Вот тот, который я использую

http://developer.yahoo.com/yui/history/

Значения хеша в URL обрабатываются в основном для интеграции с кнопкой возврата и закладки. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...