Убрать хеш из адресной строки
Проблема в том, что код выполняется перед тем, как происходит переход по хешу. В результате чего этот самый хеш добавляется в адресную строку. А нужно изменить адресную строку на нужный вид без добавления хеша. Причём страницу не перезагружать, иначе можно было бы просто правкой htaccess обойтись. Бьюсь со вчерашнего дня над этой задачей. Буду рад помощи.
<a href="#href" name="name" onclick="f()">alias</a> <a name="href">redirect</a> <script type="text/javascript"> function f() { var redirect = '/url/'; history.pushState('', '', redirect); } </script> |
|
Цитата:
|
ОК. Я думал можно что-то типа такого записать:
<a href="href"> RewriteRule ^.*(href)$ changeURL.php\#$1 [L] Но нет, действительно, так не работает. |
В таком случае не происходит перехода по хешу. А мне нужно, чтобы он произошел, а затем поменять url на необходимый.
|
avalan4e,
<a href="#href" name="name" onclick="f(event,this)">alias</a> <a name="href">redirect</a> <script type="text/javascript"> function f(event, link) { event.preventDefault(); link = link.getAttribute('href').replace(/#/g, ''); document.querySelector('[name="'+link+'"]').scrollIntoView(); var redirect = '/url/'; history.pushState('', '', redirect) } </script> |
рони, :)
onhashchange |
Poznakomlus,
не понял. |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <a href="#test">Test</a> <script> window.onhashchange = function () { console.log(location.hash); history.pushState('', '', '/url/'); alert(location.hash === ''); }; </script> </body> </html> |
Poznakomlus,
не понимаю чем это может помочь, запись хеша уже произошла, если конечно история не нужна, тогда только. |
Часовой пояс GMT +3, время: 23:13. |