Страница jQuery Mobile теряет файл JavaScript - PullRequest
4 голосов
/ 19 декабря 2011

Эй, ребята, у меня есть реальная проблема с jQuery Mobile, я пытался исправить, но у меня не получилось :-( У меня есть Навигация для просмотра через мое приложение, и если я нажимаю на ссылку, связанную с сайтом,у которого есть файл .js для выполнения некоторых функций, файл .js утерян. Если я посмотрю на firebug, я не увижу указанный мной «get-marker-id.js» в разделе -cе моего -code.Я обновляю страницу, появляется файл .js, и все в порядке, все функции найдены и работают отлично.

В качестве обходного пути я выяснил, что для -Tag of the Navigation решается атрибут rel=externalЭта проблема вызвана тем, что сайт загружается полностью, а не с помощью AJAX-вызова.

Теперь я хочу узнать, смогу ли я решить проблему с помощью лучшего обходного пути? Потому что, если я использую "rel=external", мобильный Safari открываетновая вкладка, если я сохранил страницу на своем домашнем экране, и это то, что мои клиенты не хотят = (. Я очень благодарен за помощь: -)

Ответы [ 3 ]

3 голосов
/ 20 декабря 2011

Если мы предположим, что мы начинаем с простого одностраничного шаблона из jquery mobile, есть ключевой бит информации, который не учитывается. Если вы хотите иметь глобально доступные функции и переменные и иметь возможность изменять значения по умолчанию платформы, вам нужно добавить свой собственный скрипт между jquery.js и jquerymobile.js, как показано на их странице глобальных конфигураций * 1004. *.

<head>
    ...
    <script src="jquery.js"></script>
    <script src="custom-scripting.js"></script>
    <script src="jquery-mobile.js"></script>
    ...
</head>

Когда вы переходите с одной страницы на другую с помощью встроенной навигации на основе ajax, все в custom-scripting.js все равно будет вам доступно и даже может использоваться для управления страницами по мере их поступления.

Однако, если вы разместите скрипт внутри вашего <div data-role="page">, у вас будет доступ к выполнению только до тех пор, пока эта страница на месте. Как только вы перейдете на другую страницу, эта начальная страница будет удалена из DOM и, следовательно, из вашего скрипта. Поэтому вам нужно будет либо вызвать свой скрипт на каждой странице, либо поместить его в custom-script.js. Использование глобального сценария было бы гораздо более производительным вариантом, так как HTTP-запросы на мобильных устройствах являются причиной большинства замедлений.

2 голосов
/ 19 декабря 2011

Если вы ссылаетесь на файл .js, который находится за пределами элемента jquery-mobile "role-page" на загружаемой странице, он вообще не будет анализироваться при загрузке страницы через ajax. Я не уверен насчет ссылок внутри элемента "role-page", но я знаю, что встроенные скрипты действительно анализируются. Попробуйте переместить скрипт внутрь элемента страницы.

0 голосов
/ 25 сентября 2012

Я вижу здесь две вещи и не могу решить, что лучше для мобильного приложения?

1) Поместить ваш custom.js между jquery и jquerymobile в разделе head index.html.

  • Таким образом, у вас будет один больший файл .js со всеми триггерами страницы (pageshow, pageinit ..), и этот файл будет загружен только один раз (меньше запросов http)

  • Проблема, с которой я столкнулся: когда вы нажимаете кнопку перезагрузки браузера в середине вашего приложения на странице, динамические объекты, такие как ajax и т. Д., Расположенные в вашем файле custom.js, не загружаются.Результат: пустая страница.(то же самое относится к закладкам на страницу в вашем одностраничном приложении jqm)

2) Включая вашу пользовательскую страницу кодирования, специфичную для каждой страницы JQM в вашем шаблоне одной страницы внутри данных.роль = стр.

  • Я полагаю, что теперь при перезагрузке через кнопки браузера код также будет перезагружен (он есть), но опять же, больше страниц.

Мой вопрос: как получитьрешение, как в 1), но затем снова поддерживает перезагрузку страницы

...