7

Mam straszne, rozproszone strony z dużą ilością javascript:IE8 skacze tylko powrót do początku poprzedniej strony nie tam, gdzie byłem wcześniej (ale tylko z JS on)

Ma widoku listy i jeśli cię lubię może szczegółowo obejrzeć jeden z elementów na liście.

Problem polega na tym, że jeśli chcę wrócić z widoku szczegółów do widoku listy, używając przycisku wstecz przeglądarki, otrzymuję inne wyniki.

W przeglądarce Chrome i Firefox, nawet w IE7 skończę, gdzie kliknąłem, ale nie w IE8.

Aby jeszcze bardziej zagmatwać, jeśli wyłączę JavaScript, działa również dla IE8.

Problem polega na tym, że teraz nie mam gdzie szukać. Czy ktoś zna ten problem lub przynajmniej metodę lub funkcję JavaScript, które mogą mieć na to wpływ?

+0

Może dodać sort do listy? jest wywoływany z db? – DiederikEEn

+0

Możliwe powody: strona przekierowuje klienta przez window.location = "herpderp" zamiast window.location.replace(); strona używa elementów iframe, co nie jest tak oczywiste, gdy mówimy o przechodzeniu historii, szczególnie w IE. – Tommi

+0

Czy na liście znajduje się niezależna biblioteka JS innej firmy lub ta, którą sam Pan napisał? Jeśli jest to licencja innej firmy, poinformuj nas o tym. – Spudley

Odpowiedz

3

Trudno podać ostateczną odpowiedź bez kodu. Wstępna odpowiedź oparta na wcześniejszych doświadczeniach z IE:

IE mają różne zachowania, szczególnie IE8, które znajduje się na skrzyżowaniu starych i wszystkich oprócz standardowych wersji [IE6-, IE7] i nowsze IE9, które lepiej trzymają się standardów. W szczególności w JavaScript, IE mogą być wybredne w porównaniu do przeglądarek innych niż IE.

To powrotem zachowanie może się zdarzyć, jeśli jest wyzwalany błąd JS albo po opuszczeniu strony (dzięki łącza kliknięcie), lub gdy wrócisz (co jest łatwiejsze do wykrycia)

  • Sprawdź w przypadku wystąpienia błędu podczas opuszczania (lub wracając) w dolnej części strony
  • kliknięcie działanie może być opóźnione dzięki setTimeout która funkcja będzie ustawiona window.location.href dać wystarczająco dużo czasu do wykrycia błędu, zanim strona zostanie lewo
  • Jeśli przekierowanie jest "ręczne" (np. window.location.href= w przeciwieństwie do prostego tagu <a>) Spróbuj dodać kod try {} catch wokół kodu uruchamianego po kliknięciu elementu (jak w przypadku this onbeforeunload bug).