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