привязка события hashchange в проблеме IE7

Я испытываю некоторые проблемы с привязкой к событию hashchange в Internet Explorer 7. Все остальные версии Internet Explorer, т.е. 8 и 9 работают без проблем.

Мой код:

 $(window).bind('hashchange', function (e) { alert('hash changed'); });

Когда хэш URL-адреса изменяется в Firefox, IE8, IE9, я получаю окно предупреждения, но в IE7 ничего не происходит.

Кто-нибудь испытал это раньше?


person amateur    schedule 26.07.2011    source источник
comment
Internet Explorer не является допустимым браузером...   -  person genesis    schedule 26.07.2011


Ответы (2)


Почти уверен, что IE6 и IE7 не поддерживают его изначально. Вы пытались использовать скрипт jquery BBQ Бена Алмана, который исправляет это?

person meder omuraliev    schedule 26.07.2011
comment
IE8 был первым браузером IE, который изначально поддерживал его. Остерегайтесь, однако, что IE8 в режиме совместимости (например, действующий как IE7) будет утверждать, что поддерживает его, но это не так, как указывает Бен Алман: benalman.com/projects/jquery-hashchange-plugin - person David Lantner; 07.02.2012

[Копирование этого ответа из jQuery — событие hashchange]

Я только что столкнулся с той же проблемой (отсутствие события hashchange в IE7). Обходной путь, который подходил для моих целей, заключался в том, чтобы привязать событие click для ссылок, изменяющих хэш.

<a class='hash-changer' href='#foo'>Foo</a>

<script type='text/javascript'>

if (("onhashchange" in window) && !($.browser.msie)) { 

    //modern browsers 
    $(window).bind('hashchange', function() {
        var hash = window.location.hash.replace(/^#/,'');
        //do whatever you need with the hash
    });

} else {

    //IE and browsers that don't support hashchange
    $('a.hash-changer').bind('click', function() {
        var hash = $(this).attr('href').replace(/^#/,'');
        //do whatever you need with the hash
    });

}

</script>
person johnny.rodgers    schedule 06.07.2012
comment
просто хотел указать, что $.browser больше не работает, начиная с версии jQuery 1.9, поскольку он устарел. api.jquery.com/jQuery.browser - person Rumplin; 30.10.2013