2012-05-20 48 views
0

我正在使用jQuery Tabs插件以及「歷史記錄」插件,以允許添加書籤和使用瀏覽器後退按鈕。一切都很好 - 除了在IE 6和7中。當你加載頁面時,IE跳轉到錨點。jQuery工具選項卡+歷史記錄 - 防止在IE 6和7中跳躍

這裏的示例實現:http://coolkidz.com/sell-consign/

任何想法,讓IE的行爲很好?

+1

你沒注意到IE給你的js錯誤?第41行,char 6 –

+0

也是第1行,char 1在jquery.tools.min.js中。我認爲你應該首先修復這些錯誤 –

+0

它的價值,你的頁面在Firefox 3.6中看起來也很糟糕(是的,儘管Mozilla的努力,仍然有人使用它) – Spudley

回答

1

當在IE 6/7中啓用歷史記錄工具時,它會向頁面添加一個隱藏的iframe,並最初將iframe的location.hash設置爲'#'。發生這種情況時,IE會滾動到頁面底部的iframe(即使它隱藏)。

而不能編輯jQuery的工具來源,我能想到的兩種解決方法的:

  1. 添加這個JavaScript初始化jQuery的工具選項卡之前(demo):

    if ($.browser.msie && $.browser.version < '8') { 
        $(window).one("hash", function(e, h) { 
         if (h === '#') { 
          $(window).scrollTop(0); 
         } 
        }); 
    } 
    

    這個卷軸在「歷史記錄」工具初始化後,將其添加到頁面的頂部。這個解決方法的缺點是,如果窗口不在頁面的頂部,IE將停留在正確的位置,但是這迫使它滾動到頂部。

  2. 添加這個CSS(demo):

    iframe { 
        position: absolute; 
    }​ 
    

    IE不會嘗試滾動到一個position: absolute iframe中。此解決方法的缺點是,這會影響頁面上的任何其他iframe。

我建議與解決方法#1一起去。

+0

感謝您的快速響應!我會測試它並報告回來! –

+0

這個JS修復看起來好像應該可以工作 - 但它引起了一些跳躍。不過,我選擇了iframe修復,這是一個非常出色的想法。我繼續前進,瞄準.inner div內的iframe,並專門針對IE7和IE6。它的作品非常漂亮! –

+0

我說得太快了.. IE瀏覽器欺騙了我。我清爽的測試,鑑於我已經滾動到頂端,它似乎工作。最好的測試方法是點擊http://coolkidz.com/about中的鏈接,然後按照以上步驟進行操作。 #1是「工作」,但是在最終用戶方面發生的屏幕跳躍效果和刷新不會削減它。我會進一步測試。 –

相關問題