Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   history рассширение для браузеров не поддерживающих pushState, replaceState (https://javascript.ru/forum/project/21077-history-rassshirenie-dlya-brauzerov-ne-podderzhivayushhikh-pushstate-replacestate.html)

devote 28.12.2011 19:04

Исправил одну не приятную ошибку, читаем первый пост

devote 02.01.2012 06:42

Обновил версию, исправил работу с относительными ссылками, и добавил дополнительный параметр по просьбе трудящихся =)

zebra 16.01.2012 20:59

Странное поведение в IE 9. Урл такого вида http://12.345.678.999:20000/home.htm превращает в такой http://12.345.678.999:20000/#home.htm. И невозможно загрузить страницу

devote 16.01.2012 21:48

Цитата:

Сообщение от zebra (Сообщение 150957)
Странное поведение в IE 9. Урл такого вида http://12.345.678.999:20000/home.htm превращает в такой http://12.345.678.999:20000/#home.htm. И невозможно загрузить страницу

А что вы ожидали? что магическим образов в ИЕ9 появится полнофункциональная поддержка pushState и в строке адреса будет поддерживаться нормальный юрл?
Естественно работа с этой библиотекой подразумевает работу с якорем. если не хотите что бы она меняла юрл, запретите ей, указав параметр redirect=false
<script type="text/javascript" src="history-1.2.3.js?redirect=false"></script>

zebra 16.01.2012 22:05

Вы бы хоть написали, что в ие не будет работать.

devote 16.01.2012 22:09

Цитата:

Сообщение от zebra
Вы бы хоть написали, что в ие не будет работать.

собственно библиотека написана какраз для недоразвитых браузеров. Она не работает в нормальных браузерах, там она просто простаивает. А в таких браузерах как ИЕ она какраз таки наоборот именно что и делает, дык это работает.

Если вы не понимаете принцип работы history API нативной версии, то для вас конечно же будет казаться что библа не работает. Советую для начала почитать о том что такое history API в браузерах которые их поддерживают, и тогда сразу туча вопросов и недопониманий выскочит из головы.

zebra 16.01.2012 22:40

Та вот тетсил в фф/хром/ие9 простой пример
window.history.pushState({'note': 123 }, '', '?test=123');
alert(window.history.state);

Выводит объект только в фф. Я что-то делаю не так?

devote 16.01.2012 22:51

Цитата:

Сообщение от zebra
Выводит объект только в фф. Я что-то делаю не так?

Обычно параметр state получают при срабатывании события popstate.

А вообще вы правы, по идее его можно получить и без события. В библиотеке я это поправлю, но вот на Хром мои изменения не повлияют.

devote 16.01.2012 23:03

Обновил версию в первом топике. zebra, спасибо за указание на ошибку.

zebra 16.01.2012 23:43

Всё никак не могу понять как history работает. Вроде всё просто, но событие не popstate не срабатывает. Или всё-таки popstate не ловит вызов pushState, и надо всё время следить за изменением урла?
window.onpopstate = function(event) {
          alert(11111);
        };
        setTimeout(function() {
            history.pushState({page: 1}, "title 1", "?page=1");
        }, 2000);


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