5

我遇到了一些問題綁定到Internet Explorer 7中的hashchange事件。所有其他版本的Internet Explorer - 即。 8 & 9工作沒有問題。在IE7問題中綁定hashchange事件

我的代碼是:

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

當在Firefox,IE8,IE9的URL變化的散列我得到的警告框,但在IE7中,沒有任何反應。

以前有人遇到過這個嗎?

+7

Internet Explorer不是一個有效的瀏覽器... – genesis

回答

8

很確定IE6和IE7本身不支持它。你嘗試使用Ben Alman的jQuery燒烤腳本來修復這個問題嗎?

+2

IE8是第一個IE瀏覽器的原生支持它。然而,請注意,兼容模式下的IE8(例如,充當IE7)將聲稱支持它,但它並不像Ben Alman所指出的那樣:http://benalman.com/projects/jquery-hashchange-plugin/ –

0

[複製從jQuery - hashchange event這個答案]

我只是碰到了同樣的問題(缺乏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> 
+1

只是想指出,自從jQuery 1.9版本開始,$ .browser不再適用了,因爲它現在已經被棄用了。 http://api.jquery.com/jQuery.browser/ – Rumplin

+0

也不會'支持瀏覽器的後退按鈕... – 0m4r