2012-07-28 14 views
5

Mam stronę, na której użytkownik ma możliwość wyświetlania warunków bez przeładowywania strony, za pośrednictwem AJAX. To jednak samo w sobie nie stanowi problemu, ale próbuję także przeforsować stan historii.Stan wypychania IE historii

Działa to dobrze w większości przeglądarek, z wyjątkiem IE. Z jakiegoś niewytłumaczalnego powodu, tam treść jest ładowana przez AJAX, ale także, nowa karta jest otwierana na poprzedniej stronie. Jak mogę to naprawić?

Możesz zobaczyć przykład na tej stronie (http://galaxy-battle.de), spróbuj kliknąć "T & Cs" w "Dołącz" -box.

+0

Czy możesz pokazać nam kod, który robi to w jsfiddle, aby łatwiej było zauważyć błąd i debugować go? –

+0

Och, przepraszam, po prostu przeczytaj. Zaraz coś zrobię. – arik

+0

Przepraszam, ale nie mogłem pobrać polecenia pushState, aby działało na jsfiddle, wydaje się, że to blokuje. – arik

Odpowiedz

10

IE9 i poniżej doesn't support pushState. Masz wyjątek podczas wywoływania następującej linii:

window.history.pushState (null, null, pathFullPage);

SCRIPT438: Obiekt nie obsługuje właściwości lub metody terms_and_conditions pushState „”, linia 62 znaków 21

Można prawdopodobnie ciekawy patrząc na niektórych obejściach omawianych na Emulate/polyfill history.pushstate() in IE

2

stary, ale wciąż aktualnym pytanie? . Chcę tylko powiedzieć, że polecam , a nie, aby spróbować emulować pushState w IE.

Zamiast tego można użyć wykrywanie cecha:

  1. jeśli history.pushState nie jest null, go używać i ładować treść z fajną javascript

  2. jeżeli history.pushState (przeglądarka obsługuje pushState) ma wartość null (przeglądarka nie obsługuje parametru pushState), zmienia się adres URL/postępuje zgodnie z linkiem i powoduje zmianę całej strony:

Oczywiście oznacza to, że IE < = 9 użytkowników nie będzie miało wszystkich fajnych animacji innych użytkowników. Ale pytanie, które chcę zadać, brzmi: czy chcesz zobaczyć w Internecie linki do Twojej witryny zawierające #?

Użytkownicy mogą pomyśleć, że Twoja aplikacja jest przydatna i wklejać do niej linki w Internecie. To fajne, bo przynosi ci trochę soku z Google. Teraz, jeśli ten użytkownik używa IE i używasz history.js, użytkownik wklei link zawierający hasz.

To pokona właściwą indeksację publicznych stron aplikacji, a także będzie wyglądać brzydko. Moim osobistym zdaniem jest to, że posiadanie animacji js lub lightbox dla użytkowników IE nie jest warte tych kompromisów.

+1

Niestety wymagania biznesowe nie zawsze są pod bezpośrednią kontrolą programisty. – jaydel

Powiązane problemy