17

在我的应用程序中,我使用 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

5 回答 5

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();
}
于 2013-05-16T14:14:23.810 回答
1

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

于 2013-05-14T12:47:51.497 回答
1

这取决于你在哪里:在我的 windowsphone 8.1 lumia 925 上,它可以使用 history.go(-1);, 而navigator.app.backHistory(); 在崩溃之前导致异常。

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

于 2014-11-04T09:37:36.290 回答
1

这可能对某些人有所帮助,因为它帮助我修复了在 google chrome 浏览器中不起作用的 history.go(-1)。

// Doesn't work in Chrome browser
function onBackKeyDown() {
    history.go(-1);
    navigator.app.backHistory();
}

// Does work in Chrome browser
function onBackKeyDown() {
    history.go(-1);
    return false; //needed in chrome to prevent about:blank page.
    navigator.app.backHistory();
    return false; //needed in chrome to prevent about:blank page.
}

我根本不是 jQuery 专家,但我认为它可能会对某人有所帮助,因为我一直在寻找这个答案,但一开始却找不到。

于 2022-02-16T16:41:23.130 回答
-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()"
于 2016-03-22T21:14:44.243 回答