我们正在开发基于Cordova的Android应用程序。
所有HTML页面都是本地的(在assets/www
文件夹中)。
我们使用jquery mobile changePage方法加载HTML页面,并在pageChange
回调中注册事件(按钮点击事件等)。
对于Android 2.3及以上版本,此工作正常,请求的页面已加载,事件(点击事件等)正确绑定。
在Android 2.2上我们遇到了一个问题,在changePage
方法调用请求页面已加载但pageChange
事件未被触发(因此点击事件未正确绑定)
知道可能导致这种情况的原因是什么?
在较低版本的android上是否存在changePage
的问题?
答案 0 :(得分:0)
我不知道 pageChange 事件是否适用于Android 2.2,但有一些简单的解决方法。
可以使用Pageshow 代替。它是在 pageChange 触发之前触发的最后一个事件,因此它也可以用于事件绑定。
$(document).on('pagebeforeshow', '#index', function(){
});
最后一件事是,您无需等待 changePage
来绑定点击事件。您可以使用名为delegated event binding的内容。为了使它工作,DOM中是否存在对象并不重要,因为事件将被绑定到文档。只有在存在这种需要时,它才会传播到元素,例如,如果单击了对象。
这是您委派事件绑定的方式:
$(document).on('click', '#elementID', function(){
});
答案 1 :(得分:0)
我认为现在是时候放弃对Android 2.2的支持了。甚至PhoneGap也正式弃用对Android 2.2的支持。只有不到5%的人使用Android 2.2 and below
根据我的经验,我通常使用pagecreate
事件来绑定按钮等事件。一旦创建页面,就会触发此事件。在Android 2.2上尝试以下方法,看看它是否会帮助你。
您可以执行以下操作
$(document).on('pagecreate', '#myPageID', function(){
//Registering button click
$('#myButton').bind('click',function(){
alert('button click');
});
});