【问题标题】:after jQuery mobile pageShow silentscroll, page jumps to topjQuery mobile pageShowsilentscroll后,页面跳转到顶部
【发布时间】:2015-10-07 02:10:58
【问题描述】:

我们有一个购物篮页面,其中有产品,然后是运输方式。这是一个jQuery mobile 网站。

我想要实现的是,如果选择了运输方式,那么如果页面重新加载,jQuery mobile 会跳转到 div 到运输方式。

这里是代码,滚动到运输方式。这是一个内联脚本。

$(document).on("pageshow", function (e, ui) {
    $.mobile.silentScroll($('#kosar').offset().top);
});

预期结果:页面刷新时,窗口滚动到#kosar div。

当前结果:页面滚动到#kosar div,但立即滚动到页面顶部。

我们发现,如果silentScroll之后出现错误,窗口不会跳回页面顶部。所以看起来,pageshow 之后的东西滚动到后面,但我们不知道,是什么。

例如:

$(document).on("pageshow", function (e, ui) {
    $.mobile.silentScroll($('#kosar').offset().top);
    undefined_function(); //This function is not exists
});

以下是非工作和“工作”示例:

Here is a live example.当你刷新页面时,你会看到一秒钟的红色大文字,然后你会立即被带到页面的顶部。

Here is the example with error.

我已经在 FF Developer Edition 中对其进行了测试。使用 Chrome,您需要将浏览器的大小调整为小一点,并刷新几次以查看滚动条如何跳到底部和向上。

如何防止这种烦人的滚动到顶部?

【问题讨论】:

    标签: jquery-mobile


    【解决方案1】:

    我认为,这是 jQuery mobile js 中的一个错误,我已经向他们报告了。

    我终于明白了。

    版本: http://ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.js

    我在 jQuery mobile js silentScroll 定义中做了一个断点,而我所看到的,由于某种原因它运行了两次。第一个是好调用,ypos是一个数字,我想跳的地方,这就是为什么它跳到正确的地方。

    但是,稍后,在第 15432 行,这是这些代码行,正在运行的文档准备好:

    // window load event
    // hide iOS browser chrome on load if hideUrlBar is true this is as fall back incase we were too early before
    if ( $.mobile.hideUrlBar ) {
        $window.load( $.mobile.silentScroll );
    }
    

    当它发生时,在第二次调用时,silentScrollypos 将是一个对象,而不是函数所期望的数字,如果它不是数字,则 jQuery mobile 设置 ypos$.mobile.defaultHomeScroll 如果你不修改实际是1。这就是它跳回家的原因。

    警告:如果您认为,只需将$.mobile.hideUrlBar 设置为false,您就错了。我试过了,但它有副作用,因为在第 15416 行有另一个引用这个变量,如果你关闭,那么当你从一个页面转到另一个页面时,你不会被重定向到第二个页面的顶部页面。

    所以解决方案是注释掉这个$window.load( $.mobile.silentScroll );,现在一切都按我的预期工作了。

    【讨论】:

    • 第 15432 行是非最小版本。对于 1.4.5 的最低版本,它位于第 9 行附近,第 6917 列。在“a.mobile.hideUrlBar”之后删除“&&g.load(a.mobile.silentScroll)”对我有用。谢谢,@lolka-bolka 这让我发疯了好几天!
    • @GeoffM 有人修好了:github.com/jquery/jquery-mobile/issues/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多