2012-12-03 21 views
0

我有一個頁面,使用jQuery UI選項卡同時具有靜態和動態內容。我試圖在標籤加載完成後標籤內容爲cache,所以如果用戶關閉了標籤然後又想再次進入,我不必再次返回到服務器,並且可以使標籤顯示在標籤列表的末尾。這在FF,Chrome,Safari,Opera以及IE 8和9中都很有用。但是,IE7給我帶來了麻煩。jQuery UI選項卡動態AJAX錯誤IE7

這是一個jsFiddle,我已經說明了這個問題。從我所知道的問題來看,似乎是在內容加載一次之後,beforeLoad函數被調用。我知道我應該使用cache: true選項進行緩存,但由於用戶可以關閉一個選項卡然後嘗試返回,因此我認爲這可能會更加優雅。

複製的問題:

  1. 點擊Dynamic 1按鈕。一個新的標籤將會出現,Dyn 1,有些內容是
  2. 離開選項卡(通過關閉它,或點擊進入不同的選項卡)
  3. 點擊回Dyn 1標籤。內容現在將顯示unable to load dynamic tab

發生這種情況都使用jQuery UI的cache: true選項,改變標籤的在load功能href屬性的時候,因爲我已經做了的時候。

有沒有人有類似這樣的經歷和/或知道我可能做了什麼錯誤造成這種情況?

謝謝。總是感激你的幫助。

回答

1

我從來沒有能夠得到答案,爲什麼會發生這種行爲。然而,我確實找到了一個可行的解決方案。萬一別人是跨這個答案有同樣的問題絆倒,這是我的固定它:

變化:

beforeLoad: function(evt, ui) { 
    ui.jqXHR.error(function(jqXHR) { 
     ui.panel.html('Unable to load application'); 
    }); 
} 

要:

beforeLoad: function(evt, ui) { 
    ui.jqXHR.error(function(jqXHR) { 
     if(jqXHR.statusText !== 'canceled') { 
      ui.panel.html('Unable to load application'); 
     } 
    }); 
} 

爲什麼beforeLoad方法是即使cache: true或更改href的選項卡已發生,我仍然不確定。我將把它提交給jQuery bug論壇,看看他們說了些什麼。如果它是一個錯誤,我會嘗試更新這個帖子與票。