Phonegap - navigator.app.backHistory()不支持HTML后退按钮

时间:2013-05-14 11:35:00

标签: android ios cordova back-button back-button-control

在我的应用程序中,我使用的是phonegap 2.6。对于后退按钮,我使用以下功能

document.addEventListener("backbutton", onBackKeyDown, false);

function onBackKeyDown() {
    alert("hello");
    navigator.app.backHistory();
}

document.addEventListener('deviceready', onDeviceReady, true);

当我点击设备的硬件后退按钮时,上述功能正常工作。但是,当我点击后退按钮时,它无法正常工作。

我设计了我的后退按钮如下:

<a class="ui-link" href="#" rel="external" onclick="onBackKeyDown()">
        <img src="images/icon-back.png" alt="Phone" border="0">
</a>

但是此按钮适用于此navigator.app.exitApp();(应用程序退出)。

//Working Fine
function onBackKeyDown() {
    navigator.app.exitApp();
}

//Not Working
function onBackKeyDown() {
    navigator.app.backHistory();
}

但不适用于navigator.app.backHistory();

4 个答案:

答案 0 :(得分:14)

当我遇到同样的情况时,我尝试了3件事:

  • window.history.back()

  • navigator.app.backHistory();

  • History.go(-1);

单独地,这些都没有解决问题。我将所有3件事放在一起,令我惊讶的是它起作用了。我真的不知道背后是什么。

然后我减少了两个功能并删除了:

  • window.history.back()

现在我正在使用此功能,它工作正常。

//Works Fine
function onBackKeyDown() {
    history.go(-1);
    navigator.app.backHistory();
}

答案 1 :(得分:1)

如果在锚点上使用属性data-rel =“back”,则对该锚点的任何点击都将模仿后退按钮,返回一个历史记录条目并忽略锚点的默认href。

答案 2 :(得分:1)

取决于你的位置: 在我的windowsphone 8.1 lumia 925上,它有效 history.go(-1); , 而 navigator.app.backHistory(); 会在崩溃前导致异常。

在我的Android上(我相信大多数人), navigator.app.backHistory(); 正常运作。

答案 3 :(得分:-2)

解决!停止获取“TypeError:navigator.app未定义”

我创建的一个函数,它将首先检查您所使用的设备,然后应用相关脚本:

function onBackKeyDown() {
    var userAgent = navigator.userAgent || navigator.vendor || window.opera;
    if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) {
        // IOS DEVICE
        history.go(-1);
    } else if (userAgent.match(/Android/i)) {
        // ANDROID DEVICE
        navigator.app.backHistory();
    } else {
        // EVERY OTHER DEVICE
        history.go(-1);
    }
}

通过将此功能添加到您的后退链接/按钮来调用功能:

onclick="onBackKeyDown()"