Можно использовать косую черту (/) вместо хеша (#) без обновления страницы window.location? - PullRequest
4 голосов
/ 23 июня 2010

Я использую «window.location.hash», чтобы добавить «#something» к URL-адресу без обновления страницы.

Я хочу знать, как сделать то же самое, но используя косую черту (/) вместохэш (#).

Почему?У меня есть вкладки навигации, и я использую jQuery и Ajax для динамической загрузки данных.Когда javascript включен, в конец URL-адреса добавляется «#something» для получения данных.Когда JavaScript отключен, он перенаправляет на «/ что-то».Поэтому я хочу подделать один и тот же URL для обоих.

Вместо http://site.com/section#something -> http://site.com/section/something

Спасибо.

Ответы [ 4 ]

3 голосов
/ 23 июня 2010

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

Возможность играть с URL-адресом без перенаправления будет проблемой безопасности на некоторых уровнях (можете ли вы также изменить домен? Почему бы нет? .... Посмотрите, где проходит эта кроличья нора?). Например, изменить свой URL-адрес с помощью JavaScript, чтобы сказать: http://www.mybank.com (почему мой банк не использует SSL? Плохой банк, плохой!) Было бы мечтой фишеров ... поэтому браузеры не разрешают возиться с таким URL-адресом в все ... не без того, чтобы на самом деле отвезти тебя туда.

3 голосов
/ 23 июня 2010

Взгляните на эту статью . По сути, это позволяет вам сделать это:

history.pushState({}, 'New Title', 'new_page.html');

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

1 голос
/ 02 июля 2010

History.pushState (см. Ссылку в сообщении @ Casey или в блоге Kyle Scholz ) присутствует в последних версиях Safari и Firefox, и Modernizr 1.5 теперь тестирует его поддержку браузером.Я только начал играть с этим сегодня, и он, кажется, делает именно то, что вы хотите.

Я понимаю, что это не помогает в старых браузерах;там еще понадобится какой-нибудь трюк window.location.hash.

0 голосов
/ 23 июня 2010

Почему бы вам не развернуть SWFAddress ?

Он получает URL-адреса в виде ../#/section/something и должен быть примерно таким, как вам нужно. Он широко используется на многих сайтах Flash / AJAX по соображениям SEO.

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