2011-12-30 17 views
27

Na mojej mobilnej stronie. Próbuję załadować reklamy AdSense dla urządzeń przenośnych, ale nadal zajmują całą stronę po załadowaniu strony.Jak wyłączyć Ajax w jQuery Mobile przed załadowaniem strony?

Zorientowałem się, że jeśli wyłączysz obsługę ajaxów, strona ładuje się razem z reklamą. To działa tylko na drugiej stronie załadować bo kliknięcia łącza z tagiem ...

data-ajax="false" 

co sprawia, że ​​następny strona załadowała się doskonale.

Problem: Pierwsza załadowana strona zostanie nadpisana przez reklamę AdSense, ponieważ ajax jest włączony (chyba).

Zasadniczo pierwsza część mojej strony wygląda to tak ...

<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> 

Próbowałem wyłączyć ajax w kodzie, ale nie sądzę, to dlatego, że reklama nadal zajmuje cały strona ...

Myślałem, że może uda mi się uruchomić gościa na określonej stronie i przekieruje go na stronę, która nie jest ajaxowa.

+0

Niestety nie mam zbyt wiele czasu, aby w pełni rozważyć swoje pytanie, ale czy nie lepiej ustawić '$ .mobile.ajaxEnabled = false; 'bez zawijania go w procedurze' mobileinit'. To działa dla mnie. Może być tam kilka pułapek? Czy ktoś wie? – user907860

Odpowiedz

57

wymeldowanie docs do wiązania się z imprezy mobileinit: http://jquerymobile.com/demos/1.0/docs/api/globalconfig.html

Konkretnie ten bit:

Ponieważ zdarzenie mobileinit jest wyzwalany natychmiast po wykonaniu, musisz powiązać swoje wydarzenie program obsługi przed załadowaniem jQuery Mobile.

Oto właściwy format do wiązania się z imprezy 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> 

Najpierw jQuery rdzeń (tak .bind() będzie dostępna), a następnie obsługi mobileinit wydarzenie, a następnie jQuery Mobile, js plików (jest to ostatnie, więc program obsługi zdarzeń dla mobileinit zostanie ustawiony przed uruchomieniem zdarzenia).

Można przetestować, czy aktualny program obsługi zdarzeń mobileinit nie uruchamia się, umieszczając w funkcji alert.

+1

Idealny! Dzięki Jasper. – Joe

+0

Perfect - Miałem podobny problem z nagłówkiem Location HTTP, który został AJAXified :-(- oczywiście nie można ustawić atrybutu rel = "external" na takim nagłówku ... –

+0

Pracowałem dla mnie, gdy 'akcja' atrybut na formularzu przekierowanym na stronę bez interfejsu użytkownika jQuery, a ajax wymuszał na nim style interfejsu użytkownika JQuery: – SpyderScript

5

Zaktualizowana dokumentacja jQuery Mobile jest tutaj: http://jquerymobile.com/test/docs/api/globalconfig.html

W przeciwieństwie do innych projektów, takich jak jQuery jQuery i jQuery UI, jQuery Mobile automatycznie stosuje wiele rozszerzeń znaczników jak najszybciej ładuje (na długo przed document.ready imprezy pożary). Rozszerzenia te są stosowane na podstawie domyślnych ustawień jQuery Mobile, które są zaprojektowane do pracy ze zwykłymi scenariuszami. Jeśli zmiany ustawień są potrzebne, można je łatwo skonfigurować.

Impreza mobileinit

Kiedy zaczyna jQuery Mobile, wyzwala zdarzenie mobileinit na obiekcie dokumentu. Aby zastąpić ustawienia domyślne, połącz z mobileinit.

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

Ponieważ zdarzenie mobileinit jest uruchamiany natychmiast, trzeba związać swoją obsługi zdarzeń przed jQuery Mobile załadowany. Link do plików JavaScript w następującej kolejności:

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

Możesz zmienić ustawienia domyślne poprzez rozszerzenie przedmiotu $ Aparaty fotograficzne, korzystając $ .extend metody jQuery.

Alternatywnie można ustawić je za pomocą notacji właściwości obiektu.

$(document).on("mobileinit", function(){ 
    $.mobile.foo = bar; 
}); 
+0

Wygląda na to, że mobileinit nie działa w wersji 1.4.5. Właśnie ustawiłem $ .mobile.ajaxEnabled = false; – ymakux

1

Pomocne strona zrozumieć zachowanie jQuery mobile ajax

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

Aby włączyć animowane przejścia stron, wszystkie linki, które wskazują na stronie zewnętrznej (np. Products.html) zostanie załadowany przez Ajax.

Łącza, które wskazują inne domeny lub mają atrybuty rel = "external", data-ajax = "false" lub docelowe, nie zostaną załadowane za pomocą Ajax. Zamiast tego te linki spowodują pełne odświeżenie strony bez animowanego przejścia. Oba atrybuty (rel = "external" i data-ajax = "false") mają ten sam efekt, ale inne znaczenie semantyczne: rel = "external" powinno być używane podczas łączenia z inną witryną lub domeną, podczas gdy data-ajax = " false "przydaje się do tego, że po wczytaniu przez Ajax strony w twojej domenie.

0

Wyłączenie pracy na stronie rozwiązanie z wielką danych ajax = „false” w tagu Anchor

Powiązane problemy