Mam pewien kod (napisany przez innego programistę), który robi stronę AJAX ładującą się w WordPress (np. Bez przeładowywania strony) po kliknięciu elementu nawigacji, AJAX odświeża główny obszar zawartości. Mój problem polega na tym, że jest on uszkodzony w IE7 i nie mam pojęcia, od czego zacząć w kwestii debugowania.Pobierz wydarzenie hashchange do pracy we wszystkich przeglądarkach (w tym IE7)
Oryginalne linie otwarcia były
var queue = 0;
$('document').ready(function() {
window.addEventListener("hashchange", hashChange, false);
// Define window location variables
var windowHost = window.location.host,
windowHash = window.location.hash,
windowPath = window.location.pathname;
Ale zmieniłem je, aby addEventListener
warunkowego na podstawie tego, czy ta metoda była obecna, czy nie. Niektóre badania powiedziały mi, że ta metoda nie jest dostępna w starszych wersjach IE (na przykład 7 w moim przypadku). Ponadto konsola debugowania IE7 identyfikuje to jako niedostępną metodę, więc jest to całkiem jasne. I przepisał linie następująco, ale kod nadal nie działa:
var queue = 0;
$('document').ready(function() {
if(window.addEventListener) {
window.addEventListener("hashchange", hashChange, false);
}
else if (window.attachEvent) {
window.attachEvent("hashchange", hashchange, false);
}
// Define window location variables
var windowHost = window.location.host,
windowHash = window.location.hash,
windowPath = window.location.pathname;
Pełne Oryginalny scenariusz może być postrzegane w tym pastebin: http://pastebin.com/Jc9ySvrb
+1 aha snap spudłował! – gideon
Detektor zdarzeń jest teraz poprawnie powiązany, ale nie zrobi niczego w IE7, ponieważ jest on [nieobsługiwany] (http://caniuse.com/hashchange). [IE8 obsługuję] (http://msdn.microsoft.com/en-us/library/cc891506 (v = vs.85) .aspx) jednak zdarzenie 'hashchange'. W przypadku IE7, musisz wykryć hashchanges poprzez 'setInterval'. –
Cóż, z pewnością zdobyłeś swoją reputację tutaj @RobW - dzięki milionowi. Właśnie uratowałeś mi godziny, szczerze mówiąc nie wiem, czy warto przejść przez całą akcję 'setInterval'. Wygląda jak ogromny ból głowy. – Brian