带有phonegap的后退按钮(并查询手机?)

Back button with phonegap (and query mobile?)

本文关键字:查询 手机 按钮 phonegap 带有      更新时间:2023-09-26

我在jquery mobile和phonegap中编写的应用程序出现问题。在浏览器中测试时,我使用后退按钮没有问题(没有涉及phonegap js(。然而,一旦我尝试使用phonegap js的设备,它就会崩溃。

复制步骤:

  1. 加载应用程序
  2. 访问多个页面(使用#内部链接(
  3. 单击后退按钮或从任何位置调用history.back(((使用js控制台,或通过触发调用它的东西(

在浏览器(chromium、firefox等(上,它会返回一个"页面"(到上一个#链接,不管它是什么(。这是首选行为。

在设备上(iPhone 4、iPhone模拟器、Android 2.2(设备(、Android 3.2(设备((,它会转到第一个/登录页(index.html文件中的第一个"页面"(。

我怀疑问题出在电话间隙上。有没有办法恢复到首选行为或浏览器?

您使用jQuery Mobile的"返回"按钮链接属性吗?我用得很轻,它很有效(到目前为止只在Android上使用(。您是否试图覆盖(仅限Android(后退按钮事件?不推荐,因为你想要什么,无论如何在iPhone等上都不可能。

问题是由我使用的数据url中的空格引起的。桌面浏览器似乎可以正确处理空间,但移动浏览器将空间转换为%20%字符。jQuery mobile试图使用空格,但浏览器只记住更改后的字符。

编辑:jqm页面有一个数据url属性,允许您在一个html文档中存储多个页面。

<html>
<head> ... </head>
<body>
<div data-role="page" data-url="page-one"> ... </div>
<div data-role="page" data-url="page two"> ... </div>
</body>
</html>

第一页可以通过几种方式加载。。。

在文档中

<a href="#page-one">

或通过javascript

$.mobile.changePage("#page-one");

我遇到的问题是数据url为page two的页面。在桌面浏览器上,空间得到了维护,jqm中内置的自定义历史控件继续按预期运行。但在移动浏览器上,该空间变成了一个逃逸空间,jqm历史控件无法识别或跟踪该空间。

<script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
<script type="text/javascript" charset="utf-8">
// Call onDeviceReady when Cordova is loaded.
//
// At this point, the document has loaded but cordova-2.0.0.js has not.
// When Cordova is loaded and talking with the native device,
// it will call the event `deviceready`.
//
function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}
// Cordova is loaded and it is now safe to call Cordova methods
//
function onDeviceReady() {
    // Register the event listener
    document.addEventListener("backbutton", onBackKeyDown, false);
}
// Handle the back button
//
function onBackKeyDown() {
}

确保androidmenifest.xml文件中必须包含大于android:minSdkVersion的android:targetSdkVersion