3 причины сбоя перехода на мобильную страницу jQuery

#javascript #cordova #jquery-mobile #visual-studio-2013

#javascript #кордова #jquery-mobile #visual-studio-2013

Вопрос:

Я хочу выполнить переход на страницу при нажатии кнопки, и в файле js я пытаюсь использовать следующий код:

 $(":mobile-pagecontainer").pagecontainer().pagecontainer("change", "html/main.html", {
    allowSamePageTransitions: false,
    changeHash: false
});
  

Что приводит к сообщению об ошибке загрузки страницы.

Второй способ сделать это — следующий код, который также завершается с ошибкой:

 $.mobile.changePage("html/main.html", {
    allowSamePageTransitions: true,
    changeHash: false,
    data: loginCredentials
});
  

И третий вариант — это:

 $(":mobile-pagecontainer").pagecontainer("load", "html/main.html", {
    data: loginCredentials,
    reload: true,
    role: "page"
});
  

Последние два варианта вообще не отображают сообщений.

Что я делаю не так?

ОБНОВЛЕНИЕ 1

Часть исходного HTML-файла состоит из data-role="page" div, который содержит разделы «верхний», «содержимое» и «нижний колонтитул». Кнопка находится внутри раздела «содержимое»:

 <a href="#" data-role="button" id="loginButton">Enter</a>
  

Дополнительный HTML-файл, на который я пытаюсь переключиться, содержит только раздел «страница» с «заголовком», «содержимым» и «нижним колонтитулом», но НЕ <head> часть.

ОБНОВЛЕНИЕ 2

Я забыл упомянуть, что проект является мобильным приложением, я думал, что теги PhoneGap и Cordova укажут на это. Я протестировал приложение на устройстве, и оно отлично работает, используя опцию, показанную в ответе.

Комментарии:

1. Интересно, было бы полезно посмотреть вашу разметку… или, по крайней мере, то, как вы изложили, и любой соответствующий код!

2. The index.html содержит типичную одностраничную структуру, которую можно найти здесь: demos.jquerymobile.com/1.1.1/docs/pages/page-template.html Я загружу часть кнопки в основной вопрос.

3. Я заметил, что jQuery Mobile не относится к выбранным вами тегам и что вы не указали, какую версию используете. Теперь, когда я увидел 1.1.1 в URL, ну… Я не знал, что сказать! 🙂

4. Я тоже это заметил, но это была самая быстрая ссылка, которую я нашел для структуры html. Я использую jQm 1.4.2мин.

Ответ №1:

Согласно документации, для программного изменения страницы вы должны использовать следующее:

 $(":mobile-pagecontainer").pagecontainer("change", "html/main.html", { 
    changeHash: false 
});
  

По умолчанию для параметра allowSamePageTransitions установлено значение false , и виджет pagecontainer уже должен быть инициализирован, иначе вы бы не увидели страницу. Можете ли вы подтвердить, что html/mail.html это действительно существует или что его URL правильный.

Ссылка:

 http://api.jquerymobile.com/pagecontainer/
  

Комментарии:

1. Это тоже не работает. Я получаю сообщение об ошибке загрузки страницы. На самом деле я хочу, чтобы для параметра allowSamePageTransition было установлено значение true. The «html/main.html «существует. Что вы имеете в виду, что виджет pagecontainer уже должен быть инициализирован?

2. При написании .pagecontainer().pagecontainer(...) я понял, что первое .pagecontainer() — это инициализация .. простите, если я ошибаюсь. Есть ли у вас инструменты разработчика, чтобы определить, почему отображается страница с ошибкой загрузки ?

3. На самом деле я не инициализировал виджет. Должен ли я это делать? И нет, у меня нет инструментов разработчика, чтобы определить, почему отображается страница загрузки с ошибкой.

4. Взгляните на эту очень упрощенную настройку: 71.172.176.193 …. нажмите ввод … для повторной попытки необходимо обновить страницу… просмотрите исходный код.

5. Я использую инструменты Chrome, и с помощью отправленного вами кода я вижу это сообщение: XMLHttpRequest не может загрузить файл:///C:/users/ *******/html/main.html . Получен неверный ответ. Следовательно, доступ к источнику ‘null’ запрещен.