带phonegap的后退按钮(和查询移动?)

时间:2011-09-08 07:44:00

标签: javascript jquery jquery-mobile cordova

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

重现的步骤:

  1. 加载应用
  2. 访问多个页面(使用#在内部链接)
  3. 单击后退按钮或从任何地方调用history.back()(使用js控制台,或触发调用它的内容)
  4. 在浏览器(chrome,firefox等)上,它返回一个'page'(到之前的#link,无论它是什么)。这是首选行为。

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

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

3 个答案:

答案 0 :(得分:0)

您使用jQuery Mobile的"Back" button link属性吗?我已经轻松使用它并且它可以工作(到目前为止仅在Android上使用)。您是否试图覆盖(仅限Android)backbutton event?不推荐,不管你想要什么,而且无论如何都不能用于iPhone等。

答案 1 :(得分:0)

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

修改 jqm页面有一个data-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");

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

答案 2 :(得分:-2)

<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:targetSdkVersion大于android:minSdkVersion