Обновление адресной строки через Javascript - PullRequest
1 голос
/ 24 декабря 2010

До сих пор я знал, что невозможно изменить содержимое строки адреса без изменения страницы (и да, я не говорю о #).Я недавно заметил github.com.Как они это делают на своем сайте?они могут легко получить событие, когда пользователь нажимает кнопку «Назад» или «Далее» браузера.dojo.back также имеет эту функцию.Но как изменить адресную строку с помощью javascript, не покидая страницы?

Ответы [ 3 ]

3 голосов
/ 25 декабря 2010

Есть два способа:

  • HTML5 pushState() функция . Например, это используют Facebook и Github. Это позволяет вам изменять полный URL-адрес и запускать обработчики событий при изменении состояния истории. У Mozilla есть хороший обзор .
  • Старый вариант - использовать часть URL хэш (это то, что делает Twitter). Это означает, что вы изменяете window.location.hash, отслеживаете изменения и, основываясь на значении этого хэша, загружаете соответствующий контент. Однако это означает, что когда пользователь запрашивает, скажем, http://twitter.com/#!/27c3/status/18331752900591616, только часть, до которой запрашивается хеш-знак, от веб-сервера, все, что после хеша, является только бизнесом клиента. Это означает, что сервер еще не может решить, какой контент передать клиенту.
2 голосов
/ 25 декабря 2010
1 голос
/ 24 декабря 2010

На GitHub вы ссылаетесь на # (хеш). Когда вы щелкаете правой кнопкой мыши по номеру строки, он добавляет номер к вашему хешу.

window.location.hash = 'HELLO';

Поместите это на страницу, чтобы попробовать. Невозможно изменить window.location без перезагрузки страницы. Задняя кнопка немного сложнее, но Dojo - лучший выбор для этого. JQuery не предоставляет этого. У Dojo довольно чистый код, поэтому вы должны иметь возможность перепроектировать их функции (если вы решили включить эти функции в свою собственную библиотеку).

Вы также заметите, что Google делает то же самое с: http://code.google.com/p/digitalxero/source/browse/#svn%2Ftrunk%2Flocale%2Fde

Если вы щелкнете по папкам (слева), он изменит хеш и предоставит другое содержимое.

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