Изменение hash не воспринимается историей ie
lastHash='' function checkHash() { hash=window.location.hash.substring(1); if (hash!=lastHash) { alert (hash); } lastHash=hash setTimeout("checkHash()",100) } setTimeout("checkHash()",100) Как заставить ie воспринимать изменение хэша в историю, чтобы работали back и forward |
<script type="text/javascript"> window.onload = function(){ setTimeout(function(){ document.getElementById('test').onclick = function(){ location.replace(window.location.hostname +'#test');//для теста if(window.location.hash != '') { alert(window.location.hash.substring(1)); } return false; }; }, 100); }; </script> <a href="#test" id="test">link</a> |
действительно заработало только на 5ой строчке вместо window.location.hostname +'#test' пришлось вставить window.location.hash а то перебрасывало на несуществующую страницу
Но при этом все работало только при нажатие на ссылку, попытался приспособить под свои нужды, не вышло Я правильно понял, чтобы эксплорер добавлял переход с хешем в историю нужно сделать location.replace(sitename/page.html#hash) ? lastHash='' function checkHash() { hash=window.location.hash.substring(1); if (hash!=lastHash && hash!='') { alert (hash); location.replace(window.location.href) } lastHash=hash setTimeout("checkHash()",100) } |
location.replace() - не нужно, это я написал, чтобы вы могли протестировать, т.к. в IE нужно было бы нажать на ссылку два раза пока в адрес бы не добавился хеш.
|
snk,
Насколько помню, replace как раз записей в истории не оставляет.. |
А что тогда заставляет ИЕ записывать переход по хэшу в историю? Смотрю ваш код и не понимаю
|
Изменение window.location.hash...?
|
а мой скрипт разве не изменяет window.location.hash ?
Он как бы даже работает, без проблем отслеживая изменение этого хеша, вот только в ie не появляется кнопка back ведущая на предыдущее состояние хэша |
Часовой пояс GMT +3, время: 01:30. |