Заставить событие hashchange работать во всех браузерах (включая IE7)

У меня есть код (написанный другим разработчиком), который выполняет загрузку страницы AJAX внутри WordPress (например, без перезагрузки страницы), когда вы щелкаете элемент навигации, AJAX обновляет область основного содержимого. Моя проблема в том, что он сломан в IE7, и я не знаю, с чего начать с точки зрения отладки.

Первоначально вводные строки были

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;

, но я изменил их, чтобы сделать addEventListener условным в зависимости от того, присутствует этот метод или нет. Некоторые исследования показали мне, что этот метод недоступен в более старых версиях IE (например, 7 в моем случае). Кроме того, консоль отладки IE7 идентифицировала это как недоступный метод, так что это довольно ясно. Я переписал строки следующим образом, но код все еще не работает:

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;

Полный исходный сценарий можно просмотреть в этой pastebin: http://pastebin.com/Jc9ySvrb

17
задан Brian 13 April 2013 в 05:22
поделиться