Jquery mobile changePage";“跳跃”;返回到旧页
我对jQuery移动应用程序有一个大问题: 我正在使用自定义函数(它们由onClick触发)将页面切换到currentPage 这种情况只会发生在Android设备上,因为集成浏览器(由于ajax请求)发生了变化。iOS和Chrome很好用 单击一个元素后,动画开始,但就在结束之前,它切换回旧页面。半秒钟后,它切换回新的 我在这里拍了一部虫子电影: 多谢各位 代码(咖啡脚本):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上遇到了完全相同的问题。对我来说,它发生在繁重的页面上,即包含复杂元素的页面等。看起来您正在
我在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版本是什么 我不确定我是否理解正确。我认为过渡闪烁可能来自以下假设
我也有同样的问题。我尝试了所有的方法,终于找到了解决办法。我发现错误主要在浏览器中。因此,我将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);