2011-12-16 3 views
2

Я создаю строку фрагмента в javascript из формы и настройки с помощью window.location.hash. Если пользователь оставляет форму ввода пустой результирующий URL может бытьДвойные косые черты в порядке в хеш-фрагменте URL-адреса

example.com/#search/cars//blue//mazda 

Обратите внимание на //

Если говорят, что цена была введена было бы

example.com/#search/cars/20000/blue//mazda 

Теперь это работает отлично. Это плохая практика?

+1

По-моему, это не так, и я замечаю, что Microsoft даже использует автоматическое преобразование, чтобы сделать // в некоторых случаях, когда я запускаю MVC3. –

ответ

0

Я думаю, что pushState и другие методы API истории настолько зарождаются, что стандарты еще не развились. Как открывает последнюю работу W3 на Repurposing the Hash Sign for the New Web:

Хэш знак (#) в URI, первоначально был использован для введения статического «идентификатор фрагмента», но в последнее время он используется во многих других сложных способов, как он устанавливается и интерпретируется JavaScript в приложениях Web .

Это может привести к нарушению нормального поведения при использовании двойных слэшей в имени пути, но хэш-фрагмент может быть любой произвольной строкой. Сделайте typeof, и вы увидите, что это обычная строка. Он не является стандартным и, следовательно, может отчуждать типичный пользовательский интерфейс. Разумеется, кодекс, я думаю, вы можете чувствовать себя свободными от двойных косых черт, тройных косых черт или всего остального.

Следует иметь в виду, что escaped characters декодируется при считывании с window.location.hash.

+1

Да, как состояние передачи между iframes, так как вы проверяете URl браузера iframe и видите, когда он изменяется, делая интервальные проверки. И наиболее распространенным способом является использование события window.hashchange для изменения состояния страницы для истории, например Gmail и т. Д. –

+0

Да PushState - это потрясающе, но пока не очень хорошо поддерживается. –

0

Его нелогично, однако его немного неряшливо.

Используя событие window.hashchange, вы можете сделать несколько классных вещей. Вы просто должны помнить, чтобы отменить событие при нажатии, чтобы он не делал двойное обновление. Вы должны определить, когда происходит событие, и, соответственно, изменить форму, когда пользователь использует кнопку «Назад», он изменит форму на состояние URL-адреса, но вы должны различать, когда изменяется хеш путем выполнения скрипта или пользователь нажимает назад/вперед. У меня есть код, который делает это, если вы хотите посмотреть.

При создании хеш-URL-адресов для электронной торговли они должны соответствовать фактическим URL-адресам, поэтому они могут быть индексируемыми, если вы перечисляете перестановки для SEO. Они также должны работать с использованием истории для back/forward. Я написал для этого код, и вы можете пометить его на AJAX или фактической ссылке URL (www.kitgui.com/docs и www.klim.com/en-us/shop и многие другие вы можете увидеть через www.emeraldcode.com).