在我的应用程序中,我使用的是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();
。
答案 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)
我创建的一个函数,它将首先检查您所使用的设备,然后应用相关脚本:
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()"