#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’ запрещен.