Кнопка «Назад» с пропуском телефона (и запрос мобильного?) - PullRequest
3 голосов
/ 08 сентября 2011

У меня проблема с приложением, которое я пишу в jquery mobile и phonegap.Во время тестирования в браузере у меня не было проблем с использованием кнопки «назад» (не было никакого пробела)Однако, как только я попробую на устройстве с пробелом телефонного номера js, он сломается.

Шаги для воспроизведения:

  1. Загрузка приложения
  2. Посетите несколько страниц (связанных внутри с помощью #)
  3. Нажмите кнопку "Назад" или вызовите history.back () из любого места (с помощью консоли js или путем вызова чего-либо, что вызывает ее)

В браузере (Chromium, Firefox и т. Д.), он возвращается на одну «страницу» (к предыдущей # ссылке, какой бы она ни была).Это предпочтительное поведение.

На устройстве (iPhone 4, симулятор iPhone, Android 2.2 (устройство), Android 3.2 (устройство)) он переходит на первую / целевую страницу (первую «страницу» вфайл index.html).

Я подозреваю, что проблема с пробелом в телефоне.Есть ли способ вернуться к предпочтительному поведению или браузеру?

Ответы [ 3 ]

0 голосов
/ 23 января 2012

Проблема была вызвана пробелом в URL-адресе данных, который я использовал.Кажется, что настольные браузеры могут правильно обрабатывать пространство, однако мобильные браузеры преобразуют пространство в символ %20%.jQuery mobile пытается использовать пробел, но браузер запоминает только измененный символ.

РЕДАКТИРОВАТЬ: Страница jqm имеет атрибут data-url, который позволяет хранить несколько страниц в одном htmlдокумент.

<html>
<head> ... </head>
<body>
<div data-role="page" data-url="page-one"> ... </div>
<div data-role="page" data-url="page two"> ... </div>
</body>
</html>

Первые страницы могут быть загружены несколькими способами ...

В документе

<a href="#page-one">

или через javascript

$.mobile.changePage("#page-one");

У меня была проблема со страницей с URL-адресом данных page two.В настольных браузерах пространство сохранялось, и настраиваемый элемент управления историей, встроенный в jqm, продолжал функционировать, как и ожидалось.но в мобильных браузерах пространство превратилось в выходящее пространство, которое элемент управления истории jqm не распознал или не отслеживал.

0 голосов
/ 23 августа 2012
<script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
<script type="text/javascript" charset="utf-8">

// Call onDeviceReady when Cordova is loaded.
//
// At this point, the document has loaded but cordova-2.0.0.js has not.
// When Cordova is loaded and talking with the native device,
// it will call the event `deviceready`.
//
function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

// Cordova is loaded and it is now safe to call Cordova methods
//
function onDeviceReady() {
    // Register the event listener
    document.addEventListener("backbutton", onBackKeyDown, false);
}

// Handle the back button
//
function onBackKeyDown() {
}

убедитесь, что файл androidmenifest.xml должен содержать android: targetSdkVersion больше, чем android: minSdkVersion

0 голосов
/ 11 сентября 2011

Используете ли вы в jQuery Mobile ссылку "Назад" для кнопки атрибут? Я использовал его слегка, и он работает (до сих пор используется только на Android). Вы пытаетесь переопределить событие (только для Android) кнопка ? Не рекомендуется для того, что вы хотите, и не возможно на iPhone и т. Д. В любом случае.

...