Closed merkuriy closed 11 years ago
А как можно в hash указать и путь и id тега, чтоб HTML5-History-API при редиректе вырезала только путь? Замечу, что в пути могут быть символы &
=
в моем случае в библиотеке реализовано псевдо-якорь, то есть ссылка в HTML5 браузерах:
http://somesite.com/somepath/index.php?test=1#hash
в HTML4 браузерах превращается в ссылку вида: http://somesite.com/#/somepath/index.php?test=1#hash
тем самым получить текущий hash-фрагмент можно через history.location.hash который выдаст именно фрагмент #hash
. Единственное что нужно реализовать это скроллинг страницы до нужного указателя при переходе по такой ссылке.
А вообще нужно хорошенько подумать над этим.
Тогда ещё учитывать нужно, что в html ссылки могут быть относительными href="#tag_id"
Тогда ещё учитывать нужно, что в html ссылки могут быть относительными href="#tag_id"
Это тоже учитывается, по крайней мере при разработке я учитывал подобные ссылки. Но жестких тестов не проводил, поэтому гарантии на то что все будет пахать идеально не дам.
Нельзя считать единственным способом использования URL-якорей (hash) только для эмуляции работы переходов по страницам и разделам в HTML4 браузерах (например "#/about" для "/about" и "/news/auto" для "news/auto"). Ведь прямое назначения Якорей адреса, это когда он указывает на определённое место на странице (атрибут id html-тега) или указывает скрипту на то, что нужно поменять или сделать на странице, например указывает на определённый таб, или на определённый слайд в презентации или в hash вообще указываются значения выбранных параметров в большой сложной форме поиска (пример: "/search#age=20&political=5"). В последнем случае вообще будет удобно делиться такой ссылкой на определённое состояние формы поиска, а так же иметь удобный способ Prev/Next по истории браузера (состояниям сложной формы поиска).
Для таких случаев возможно лучше было бы иметь возможность в HTML4 браузерах устанавливать только hash с прямым назначением, т. е. когда
history.pushState( null, null, "#age=20&political=5");
устанавливал бы такой адрес "{shema+host}{current-url-path}#age=20&political=5". Может какая-то настройка нужна, или передавать дополнительный параметр в pushState.Но и с автоматическим редиректом (преобразование из HTML4 эмулированного вида в HTML5 вид) тоже стоит немного переобдумать. При вызове редиректа стоит наверно проверить параметр hash на присутствие параметра "type", и делать редирект только в этом случае. Так как якорь может использоваться по своему прямому назначению. Тогда можно было бы поставить параметр type в "!" и не бояться, что будет отредирекчено то, что не должно быть отредерекчино.