Jquery mobile changePage";“跳跃”;返回到旧页

Jquery mobile changePage";“跳跃”;返回到旧页,jquery-mobile,webkit,css-transitions,android-browser,Jquery Mobile,Webkit,Css Transitions,Android Browser,我对jQuery移动应用程序有一个大问题: 我正在使用自定义函数(它们由onClick触发)将页面切换到currentPage 这种情况只会发生在Android设备上,因为集成浏览器(由于ajax请求)发生了变化。iOS和Chrome很好用 单击一个元素后,动画开始,但就在结束之前,它切换回旧页面。半秒钟后,它切换回新的 我在这里拍了一部虫子电影: 多谢各位 代码(咖啡脚本): 我在android和ios上遇到了完全相同的问题。对我来说,它发生在繁重的页面上,即包含复杂元素的页面等。看起来您正在

我对jQuery移动应用程序有一个大问题: 我正在使用自定义函数(它们由onClick触发)将页面切换到currentPage

这种情况只会发生在Android设备上,因为集成浏览器(由于ajax请求)发生了变化。iOS和Chrome很好用

单击一个元素后,动画开始,但就在结束之前,它切换回旧页面。半秒钟后,它切换回新的

我在这里拍了一部虫子电影:

多谢各位

代码(咖啡脚本):


我在android和ios上遇到了完全相同的问题。对我来说,它发生在繁重的页面上,即包含复杂元素的页面等。看起来您正在使用“幻灯片”转换,这也是我所使用的。去掉这些页面的页面转换(即$.mobile.changePage(“page.html”,{transition:“none”})),我就解决了这个问题。希望这有帮助

如果要保留转换,可以尝试在显示上一页时先使用$.mobile.loadPage预加载该页,然后显示转换。我自己也在探索这条路线,但可能值得一试


编辑:好的-我研究了最后一个建议,但这似乎不起作用。将继续使用第一个选项。

是否尝试在第一页的click事件中添加event StopperPagation和preventDefault方法?这样,将不会触发单击事件的默认操作。此外,stopPropagation防止事件在DOM树中冒泡,防止任何父处理程序收到事件通知

  • event.stopPropagation()
  • event.preventDefault()
例如:

$("p").click(function(event){
    event.stopPropagation();
    event.preventDefault();
    // change page
});

你的JQM和Android版本是什么

我不确定我是否理解正确。我认为过渡闪烁可能来自以下假设

  • 重页面DOM转换
  • 在css文件的某个地方使用“translate3d”
  • 未使用“H/W加速”功能。通过将此行添加到
  • android:hardwareAccelerated=“true”


    我也有同样的问题。我尝试了所有的方法,终于找到了解决办法。我发现错误主要在浏览器中。因此,我将pushStateEnabled的配置设置为false。我这样做是通过添加以下脚本

    <script type="text/javascript">
    $(document).bind("mobileinit", function(){
    $.mobile.pushStateEnabled = false;
    });
    </script>
    
    
    $(document).bind(“mobileinit”,function(){
    $.mobile.pushStateEnabled=false;
    });
    
    它应该在调用jquery移动脚本之前添加,有关更多信息,您可以在


    它解决了问题,不再往后跳

    在尝试了数周的解决方案之后,我最终修改了JQM库,一个接一个地禁用页面转换。这不是一个好的解决方案,但这是我唯一能做的事情

    我在$.mobile.changePage和锚链接上都看到了跳转页面。我使用了幻灯片过渡,但删除它并没有解决问题。将pushStateEnabled设置为false也不起作用。跳转发生在所有的设备和浏览器上(无论如何,我测试过)

    下面是我对JQM库(v1.3.2)所做的工作

    在定义$.mobile.changePage函数之前,我添加了:

    var justChangedPage = false;
    
    然后在函数中有一行:

    if ( pbcEvent.isDefaultPrevented()) {
        return;
    }
    
    我改为:

    if ( pbcEvent.isDefaultPrevented() || justChangedPage) {
        return;
    }
    
    然后,就在$.mobile.changePage函数的这一部分之后:

    if ( toPage[ 0 ] === $.mobile.firstPage[ 0 ] && !settings.dataUrl ) {
        settings.dataUrl = documentUrl.hrefNoHash;
    }
    
    我补充说:

    justChangedPage = true;
    setTimeout(function() {
        justChangedPage = false;
    }, 500);
    
    (将这一点放在函数前面是不起作用的——所有这些东西在一个页面转换中执行多次。而半秒似乎是阻止页面跳转的最小超时时间。)


    我希望这能帮助一些人,即使这是一次黑客攻击…

    我遇到了完全相同的行为,似乎很少有人有相同的问题。起初我认为这是由jQuery移动库引起的。后来,我设法找到了问题的根源,这是我自己代码中的一个bug。 我做了一个演示来解释这个问题

    希望这能给有同样问题的人一个提示

    $(文档).on('pagebeforeshow','#page2',function(){
    console.log('Page2 beforshow');
    var htmlGeneratedOnTheFly='

      对于(var i=0;iHi Samik!不幸的是,这对我来说不是一个真正的解决方案,因为我的客户想要转换:-/但是谢谢你的回答。用另一个选项编辑了答案。谢谢。href上的默认操作是javascript:;-无论如何-没有解决问题。但是我们正在解决它的路上-很可能是css问题…jqueryy移动页面转换在桌面浏览器中非常好,但在设备浏览器中却是灾难性的。我更喜欢
      $.Mobile.defaultPageTransition='none';
      :-(@Mithun:that修复了我的问题JQM 1.2,尝试了1.3(类似错误).Android 4.x默认浏览器和PhoneGap-两者都有。这可能是由转换前的DOM操作造成的。PhoneGap端口中启用了硬件加速,而translate3d被禁用。感谢您的帮助!我真希望有时间理解为什么这样做,但它对我有效。这是一个jQuery Mobile错误,在我的应用程序中,我设置了在
      pagecreate
      事件中,我的更改页面事件在每页上只触发一次,并且我仍然有返回到旧页面的页面的相同行为。
      justChangedPage = true;
      setTimeout(function() {
          justChangedPage = false;
      }, 500);