【问题标题】:scrollTo event overridden when using jQuery Mobile使用 jQuery Mobile 时覆盖的 scrollTo 事件
【发布时间】:2015-05-03 07:17:20
【问题描述】:

加载后,我希望页面的一部分显示在顶部,因此页面滚动将在该特定位置。没有用户看到滚动,我希望他立即看到页面上的正确位置。

我加载了 JQuery 移动脚本,这会覆盖文档就绪和加载事件。 如果我删除了 JQuery 移动脚本,它可以完美运行。但我不能删除它。

我试过了:

 $(window).load(function() {
    window.scrollTo($("#selector").offset().top, 0);
});

正如在 - Stackoverflow question 中提到的,我试过了:

$(window).load(function() {             
        setTimeout(function() {        $.mobile.silentScroll($("#selector").offset().top); }, 100);
                
            }
        });

但这对我不起作用。 仅在 chrome 中,滚动条位于正确的位置,但在 IE、Firefox 中却没有。 如果我将计时器增加到 1000 IE 工作但用户看到页面顶部并且滚动到正确的位置后。这不好。

我试过了:

$(document).on("pagebeforeshow", '#selector', function() {
            $.mobile.silentScroll(500);
            setTimeout(function() {
                $.mobile.silentScroll(500);
            }, 100);
        });

它也没有用。

我需要做什么,在所有浏览器中将页面滚动到正确的位置,在页面加载后立即。

感谢您的帮助。

【问题讨论】:

    标签: javascript jquery jquery-mobile mobile scroll


    【解决方案1】:

    我在jsfiddle 中编写了示例代码,它适用于 Chrome 和 Firefox

    这是我使用的代码:

    $($("html,body").animate({scrollTop: 500}, 1000));
    

    希望有帮助

    编辑:如果您希望在页面加载后立即滚动到特定位置,请使用此代码(请参阅plunker sample

    $(document).ready(function()
    {
         $("html,body").scrollTop(400);
    });
    

    【讨论】:

    • 但我不希望用户看到滚动。我希望他立即看到页面中的特定部分。
    • 谢谢,但它没有帮助。我编辑了我的问题并标记了 JQuery 移动设备覆盖了 $(document).ready 事件。页面滚动到正确的位置,但再次跳转到顶部。如果我删除 JQuery 移动脚本,一切都会完美。它不会再次跳到顶部。
    • 我也需要这样做,在页面显示后滚动。但不知何故,它总是滚动到顶部。我目前的解决方法是把它放在setTimeout 中,并有你自己的时间间隔。然后它应该正确滚动。我正在使用这个。 jQuery(document).ready(function() { setTimeout( function() { jQuery('html,body').scrollTop(jQuery('#_id55').offset().top-110); } , 500); });
    猜你喜欢
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    相关资源
    最近更新 更多