在IE7问题中绑定hashchange事件

时间:2011-07-26 16:50:53

标签: javascript jquery internet-explorer internet-explorer-7 hashchange

我遇到了一些与Internet Explorer 7中的hashchange事件绑定的问题。所有其他版本的Internet Explorer - 即。 8& 9没有问题。

我的代码是:

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

当Firefox,IE8,IE9中网址的哈希值发生变化时,我会收到警告框,但在IE7中,没有任何反应。

以前有人经历过这个吗?

2 个答案:

答案 0 :(得分:8)

非常确定IE6和IE7本身不支持它。您是否尝试使用Ben Alman的jquery BBQ脚本修复此问题?

答案 1 :(得分:0)

[从jQuery - hashchange event复制此答案]

我遇到了同样的问题(在IE7中缺少hashchange事件)。适合我的目的的解决方法是绑定散列更改链接的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>