Подтвердить что ты не робот

Как отключить Ajax в jQuery Mobile перед загрузкой страницы?

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

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

data-ajax="false"

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

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

В основном первая часть моей страницы выглядит так:

<html>
<head>

<link rel="stylesheet" href="#" onclick="location.href='http://code.jquery.com/mobile/1.0rc3/jquery.mobile-1.0rc3.min.css'; return false;" />
<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>

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

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

4b9b3361

Ответ 1

Отметьте документы для привязки к событию 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 в функцию.

Ответ 2

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

В отличие от других проектов jQuery, таких как jQuery и jQuery UI, jQuery Mobile автоматически применяет многие улучшения разметки, как только он загружается (задолго до возникновения события document.ready). Эти усовершенствования применяются на основе настроек по умолчанию 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;
});

Ответ 3

Полезная страница для понимания поведения jQuery для мобильных ajax

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

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

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

Ответ 4

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