jQuery工具选项卡+历史记录 - 防止在IE 6和7中跳转

时间:2012-05-20 18:41:10

标签: jquery internet-explorer jquery-tools

我正在使用jQuery Tabs插件和“History”插件,以允许书签和使用浏览器后退按钮。一切都很好 - 除了在IE 6和7中。当你加载页面时,IE跳转到锚点。

以下是示例实现:http://coolkidz.com/sell-consign/

让IE表现得很好的任何想法?

1 个答案:

答案 0 :(得分:1)

在IE 6/7中启用“历史记录”工具后,它会向页面添加隐藏的iframe,并最初将iframe的location.hash设置为'#'。当发生这种情况时,IE会滚动到iframe(即使它是隐藏的),它位于页面的底部。

无法编辑jQuery Tools源代码,我可以想到两个解决方法:

  1. 在初始化jQuery工具选项卡(demo)之前添加此JavaScript:

    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。

  3. 我建议采用解决方法#1。