cordova Phonegap - navigator.app.backHistory()在HTML后退按钮上不起作用

kmb7vmvb  于 2022-11-15  发布在  其他
关注(0)|答案(5)|浏览(105)

在我的应用程序中,我使用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();不起作用。

l5tcr1uw

l5tcr1uw1#

当我面对同样的情况时,我尝试了3种不同的方法:

  • window.history.back()
  • navigator.app.backHistory();
  • History.go(-1);

单独来看,这些都不能解决问题。我把这三件事放在一起,令我惊讶的是,它起作用了。我真的不知道它背后是什么。
然后我减少到两个功能和删除:

  • window.history.back()

现在我正在使用这个功能,它工作得很好。

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

7vux5j2d2#

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

tcomlyy6

tcomlyy63#

这取决于你在哪里:在我的windowsphone 8.1 Lumia 925上,它工作历史。go(-1);*,同时**导航器。应用程序。backHistory();**在崩溃前导致异常。
在我的安卓系统上(我相信大多数),**navigator.app.backHistory();**工作正常。

lqfhib0f

lqfhib0f4#

这可能会帮助一些人,因为它帮助我修复了历史。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.
}

我不是jQueryMaven,但我想它可能会帮助一些人,因为我正在寻找这个答案,但一开始找不到。

goucqfw6

goucqfw65#

已解决!停止获取“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()"

相关问题