Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Phonegap-navigator.app.backHistory()无法使用HTML后退按钮_Android_Ios_Cordova_Back Button_Back Button Control - Fatal编程技术网

Android Phonegap-navigator.app.backHistory()无法使用HTML后退按钮

Android Phonegap-navigator.app.backHistory()无法使用HTML后退按钮,android,ios,cordova,back-button,back-button-control,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);

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


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

在遇到相同情况时,我尝试了三种不同的方法:

  • window.history.back()

  • navigator.app.backHistory()

  • History.go(-1)

就个人而言,这些都不能解决问题。我把这三件事放在一起,令我惊讶的是它居然奏效了。我真的不知道背后是什么

然后我减少到两个函数并删除:

  • window.history.back()
现在我正在使用这个函数,它工作得很好

//Works Fine
function onBackKeyDown() {
    history.go(-1);
    navigator.app.backHistory();
}
这取决于你在哪里: 在我的windowsphone 8.1 lumia 925上,它可以history.go(-1),, 而navigator.app.backHistory()在崩溃前导致异常

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

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

非常确定data rel=“back”仅在jQuery Mobile中使用。对于来这里查找cordova 3.8和ios 9.0相同问题的人,请检查以下内容:
onclick="onBackKeyDown()"