Как отключить Ajax в jQuery Mobile перед загрузкой страницы? - PullRequest
29 голосов
/ 31 декабря 2011

На моем мобильном сайте.Я пытался загрузить объявления Adsense Mobile, но они продолжают занимать всю страницу после загрузки самой страницы.

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

data-ajax="false"

, что делает загрузку следующей страницы идеально.

Проблема : Первая загруженная страница будет перезаписана рекламой adsense, потому что включен ajax (я думаю).

В основном первая часть моей страницы выглядит следующим образом ...

<html>
<head>

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0rc3/jquery.mobile-1.0rc3.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0rc3/jquery.mobile-1.0rc3.min.js"></script>
<script language="text/javascript">

      $(document).bind("mobileinit", function () {

            $.mobile.ajaxEnabled = false;

      });

</script>
</head>
<body>

    <div data-role="header">
        <h1>Angry Birds Cheats</h1>
    </div>



    <div data-role="content">

<div>
    <script type="text/javascript"><!--
  // XHTML should not attempt to parse these strings, declare them CDATA.
  /* <![CDATA[ */
  window.googleAfmcRequest = {
    client: '',
    format: '',
    output: '',
    slotname: '',
  };
  /* ]]> */
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_afmc_ads.js"></script>
</div>

IЯ пытался отключить Ajax в коде, но я не думаю, что это потому, что объявление все еще занимает всю страницу ...

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

Ответы [ 4 ]

60 голосов
/ 31 декабря 2011

Извлечение документов для привязки к событию mobileinit: http://jquerymobile.com/demos/1.0/docs/api/globalconfig.html

В частности, этот бит:

Поскольку событие mobileinit запускается сразу после выполнения, вам нужно будет привязать ваш обработчик событий перед загрузкой jQuery Mobile.

Вот правильный формат для привязки к событию mobileinit:

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0rc3/jquery.mobile-1.0rc3.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
$(document).bind("mobileinit", function () {
    $.mobile.ajaxEnabled = false;
});
</script>
<script src="http://code.jquery.com/mobile/1.0rc3/jquery.mobile-1.0rc3.min.js"></script>

Сначала будет доступно ядро ​​jQuery (поэтому будет доступен .bind()), затем обработчик события mobileinit, затем js-файл jQuery Mobile (это последний файл, поэтому обработчик события для mobileinit будет установлен до того, как событие будет уволен).

Вы можете проверить, что ваш текущий обработчик событий mobileinit не запускается, введя в функцию alert.

5 голосов
/ 17 декабря 2012

Обновленная документация по jQuery Mobile находится здесь: http://jquerymobile.com/test/docs/api/globalconfig.html

В отличие от других проектов jQuery, таких как jQuery и jQuery UI, jQuery Mobile автоматически применяет множество улучшений разметки, как только загружается (задолго до документа.готовые события пожаров).Эти улучшения применяются на основе стандартных настроек jQuery Mobile, которые предназначены для работы с общими сценариями.Если необходимо изменить настройки, их легко настроить.

Событие mobileinit

При запуске jQuery Mobile оно вызывает событие mobileinit на объекте документа.Чтобы переопределить настройки по умолчанию, выполните привязку к mobileinit.

$(document).on("mobileinit", function(){
  //apply overrides here
});

Поскольку событие mobileinit запускается немедленно, вам необходимо привязать обработчик событий перед загрузкой jQuery Mobile.Ссылка на файлы JavaScript в следующем порядке:

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

Вы можете переопределить настройки по умолчанию, расширив объект $ .mobile с помощью метода jQuery $ .extend.

$(document).on("mobileinit", function(){
  $.extend(  $.mobile , {
    foo: bar
  });
});

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

$(document).on("mobileinit", function(){
  $.mobile.foo = bar;
});
1 голос
/ 14 февраля 2013

Полезная страница для понимания поведения jquery mobile ajax

http://jquerymobile.com/test/docs/pages/page-links.html

Чтобы включить переходы анимированных страниц, все ссылки, которые указывают на внешнюю страницу (например, products.html), будутзагружается через Ajax.

Ссылки, которые указывают на другие домены или имеют атрибуты rel = "external", data-ajax = "false" или target, не будут загружаться с Ajax.Вместо этого эти ссылки приведут к полному обновлению страницы без анимированного перехода.Оба атрибута (rel = "external" и data-ajax = "false") имеют одинаковый эффект, но разное семантическое значение: rel = "external" следует использовать при ссылке на другой сайт или домен, тогда как data-ajax = "false "полезно для простого выбора страницы в вашем домене для загрузки через Ajax.

0 голосов
/ 30 апреля 2013

Отключение постраничного решения прекрасно работает с data-ajax = "false" для тега Anchor

...