Phonegap - navigator.app.backHistory() не работает над кнопкой HTML back
В моем приложении я использую phonegap 2.6.For кнопку "Назад", я использую следующую функцию
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();
.
Ответы
Ответ 1
Я пробовал 3 отдельные вещи, когда сталкивался с такой же ситуацией:
Индивидуально, ни одна из них не решает проблему. Я собрал все три вещи, и к моему удивлению, это сработало. Я действительно не знаю, что стоит за ним.
Затем я уменьшился до двух функций и удалил:
Теперь я использую эту функцию, и она работает нормально.
//Works Fine
function onBackKeyDown() {
history.go(-1);
navigator.app.backHistory();
}
Ответ 2
Если вы используете атрибут data-rel= "back" на якоре, любые щелчки на этом якоре будут имитировать кнопку возврата, возвращая одну запись истории и игнорируя привязку по умолчанию href.
Ответ 3
это зависит от того, где вы находитесь:
на моем windowsphone 8.1 lumia 925, он работает history.go(-1);,
а navigator.app.backHistory(); вызывает исключение перед сбоем.
На моем Android (я считаю, большинство), navigator.app.backHistory(); работает правильно.
Ответ 4
Решено! Остановить получение "TypeError: navigator.app undefined"
Созданная мной функция сначала проверит, на каком устройстве вы находитесь, а затем примените соответствующий script:
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()"