2014-02-06 6 views
2

У меня есть jquery history.js, но я бы хотел использовать теги хэша, которые будут использоваться. Я пробовал установить History.options.html4Mode=true, но это не сработает.history.js переписывает URL-адреса с помощью хеш-тегов

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

Что происходит, когда я использую хэш-тегов является:

1) Исходное состояние: http://localhost/<script_path>/<param1>?get&file=<html_file>

2) History.pushSate(null, null, http://<script_path/<parm>?get&file=<html_file>#/<parm>/<parm>?<more parms>

3) После того, как History.pushState: http://localhost/<parm>/<parm>?<more parms>

редактирования: забыл упомянуть, что если я удалить хэш, он добавляет все после файла.

изменить 2: похоже, какое-то взаимодействие между историей и jquery. Я думаю, что история подталкивает URL-адрес, который я ему даю. Пройдя через него прямо сейчас.

редактирование 3: решены. historyjs не будет работать для этого проекта. Мне нужно использовать location.hash

ответ

2

Если все, что вы делаете, добавляет хэш на существующий URL, вы должны установить location.hash. Используйте pushState для изменения имени пути без перезагрузки страницы.

UPDATE: history.js использует хеши для поддержки старых браузеров. Таким образом, передача хешированного URL-адреса в history.js просто не имеет смысла (например, что происходит в старых браузерах?).

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

var path2 = "/script_path/param1?more=params&even_more=params"; 
var newUrl = "/script_path/param1?get&file=html_file&path=" + encodeURI(path2); 
History.pushSate(null, null, newUrl); 

... или вы можете воспользоваться API (без кодирования необходимо):

var path2 = "/script_path/param1?more=params&even_more=params"; 
var newUrl = "/script_path/param1?get&file=html_file"; 
History.pushSate({path: path2}, null, newUrl); 
+0

Спасибо, что делает работу для нажатия ссылки, но не перезаряжается. Мой вопрос по-прежнему заключается в том, почему history.js удаляет все, кроме сервера и хэша? – locoMotion

+0

Я построил свой собственный html 5-плагин, который отлично поработал, но мне нужно поддерживать html 4-браузеры. Этот плагин, похоже, подходит, если я могу его понять. O.o – locoMotion

+0

Комментарий был слишком длинным, поэтому я обновил свой ответ –