Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Изменение hash не воспринимается историей ie (https://javascript.ru/forum/dom-window/11709-izmenenie-hash-ne-vosprinimaetsya-istoriejj-ie.html)

snk 08.09.2010 21:05

Изменение 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

monolithed 08.09.2010 22:21

<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>

snk 09.09.2010 00:05

действительно заработало только на 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)
            }

monolithed 09.09.2010 07:38

location.replace() - не нужно, это я написал, чтобы вы могли протестировать, т.к. в IE нужно было бы нажать на ссылку два раза пока в адрес бы не добавился хеш.

inGray 09.09.2010 09:24

snk,
Насколько помню, replace как раз записей в истории не оставляет..

snk 10.09.2010 17:12

А что тогда заставляет ИЕ записывать переход по хэшу в историю? Смотрю ваш код и не понимаю

inGray 10.09.2010 22:13

Изменение window.location.hash...?

snk 13.09.2010 23:36

а мой скрипт разве не изменяет window.location.hash ?
Он как бы даже работает, без проблем отслеживая изменение этого хеша, вот только в ie не появляется кнопка back ведущая на предыдущее состояние хэша


Часовой пояс GMT +3, время: 01:30.