Изменение 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, время: 17:36. |