Как перезагрузить внешний JavaScript при смене страницы, используя jquery mobile? - PullRequest
0 голосов
/ 26 марта 2012

У меня есть пара страниц в мобильной версии сайта, которые используют службы определения местоположения Google.Я использую функцию changePage Ajax для навигации по страницам сайта.На первой странице загрузки службы определения местоположения работают должным образом, если я перехожу на другую страницу и возвращаюсь, это не так.

Когда я добавляю rel="external", это работает, но проблема в том, что он перезагружает всю страницу, что не имеет большого значения для настольных приложений, но не очень хорошо выглядит на мобильных устройствах.

Я пыталсядобавить reloadPage = true к changePage, но это не имеет никакого значения

Есть ли способ перезагрузить только службы определения местоположения без перезагрузки всей страницы?

Пример:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false" ></script>

$("#btn-loc").click(function () {
        $.mobile.changePage("#btn-loc", { reloadPage: true }, { transition: "slide" });
    });

1 Ответ

0 голосов
/ 26 марта 2012

Когда вы используете reloadPage : true, вы должны указать местоположение внешней страницы, а не идентификатор этого элемента псевдостраницы:

$("#btn-loc").click(function () {
    $.mobile.changePage("/btn-loc.html", {
        reloadPage : true,
        transition : "slide"
    });
});

Также обратите внимание, как я передал в объекте параметров, должно быть только одно со всеми свойствами, которые вы хотите установить в одном объекте.

reloadPage ( логический , по умолчанию: false)

Принудительная перезагрузка страницы, даже если она уже находится в DOM контейнера страницы.

  • Используется только в том случае, если аргумент 'to' в changePage () является URL-адресом.

Источник: http://jquerymobile.com/demos/1.1.0-rc.1/docs/api/methods.html

Обновление

Чтобы добавить скрипт в DOM через JS, вы можете использовать код Google Analytics:

<script>
    (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = '/path/to/my-file.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();
</script>
...