2012-09-04 77 views
0

Possible Duplicate:
window.location = #anchor doesn't work in IEIE中不支持JQuery window.location.hash?

我有一個選擇框,當點擊更改了我的基於AJAX的頁面的URL的哈希值。我有一個函數,定期檢查window.location.hash的更改,然後相應地更新內容。以下代碼是在選擇更改時更改URL的功能。它適用於Firefox,但我無法在IE中使用它!我不斷收到的對象不支持此屬性或方法錯誤:

#ob是我的選擇

$("#ob").change(function() { 
    ob = $(this).val(); 
    window.location.hash = "#ob=" + ob; 
}); 

有什麼建議?謝謝!

+0

你使用哪個IE版本? IE7或更低版​​本不支持onhashchange事件。 – sajawikio

回答

1

問題不是散列,錯誤發生在行之前。
聲明變量使用var關鍵字:

$("#ob").change(function() { 
    var ob = $(this).val(); 
    window.location.hash = "#ob=" + ob; 
}); 

讀到這裏的解釋:jQuery selector does not work in IE7/8

+0

雖然良好的做法,這不會解決問題。 – josh3736

+0

是的,它會;) –

+0

允許我改述:這*不應該*解決問題。我知道IE將每個元素的ID都添加爲全局屬性,但從我記憶中,覆蓋這些並不是問題。 [我做了一些測試](http://jsfiddle.net/josh3736/zNhwK/),奇怪的是,只是分配給全局'ob'確實會拋出。但是,如果你首先覆蓋'window.ob',那麼這工作正常。 – josh3736

1

而不是滾動您自己的狀態管理,我只是去同一個戰鬥考驗的庫來處理一切爲你。我最喜歡的是jQuery BBQ

$("#ob").change(function() { 
    var ob = $(this).val(); 
    $.bbq.pushState({ ob:ob }); 
}); 

作爲額外的獎勵,在現代瀏覽器onhashchange事件,而不是輪詢更改到location.hash燒烤掛鉤。