Comment désactiver Ajax dans jQuery Mobile avant la charge de la page?

Sur mon site mobile. J'ai essayé de charger des annonces mobiles Adsense, mais elles continuent de prendre la page entière après la chargement de la page.

J'ai compris que si je désactive ajax, la page serait bien chargée avec la publicité ensemble. Cela fonctionne uniquement sur la deuxième page que je charge car je clique sur un lien avec la balise …

data-ajax="false" 

Ce qui rend parfaitement la page suivante.

Problème : la première page chargée sera écrasée par l'annonce adsense car ajax est activé (je pense).

Fondamentalement, la première partie de ma page ressemble à ça …

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

J'ai essayé de désactiver ajax dans le code, mais je ne pense pas que ce soit parce que l'annonce reprend la page entière …

Je pensais que je pourrais peut-être commencer le visiteur à une certaine page et les rediriger vers une page non-ajax.

Vérifiez les docs pour se lier à l'événement mobileinit : http://jquerymobile.com/demos/1.0/docs/api/globalconfig.html

Plus précisément, ce bit:

Étant donné que l'événement mobileinit est déclenché immédiatement après l'exécution, vous devrez lier votre gestionnaire d'événements avant que jQuery Mobile ne soit chargé.

Voici le format approprié pour se lier à l'événement 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> 

Tout d'abord, jQuery Core (donc .bind() sera disponible), puis le mobileinit événements mobileinit , puis le mobileinit Mobile js (ce dernier est le dernier pour que le gestionnaire d'événements pour mobileinit soit défini avant l' mobileinit ).

Vous pouvez tester que votre gestionnaire d'événements de mobileinit actuel ne déclenche pas en mettant une alert dans la fonction.

La documentation mise à jour jQuery Mobile est ici: http://jquerymobile.com/test/docs/api/globalconfig.html

Contrairement à d'autres projets jQuery, tels que jQuery et jQuery UI, jQuery Mobile applique automatiquement de nombreuses améliorations de balises dès son chargement (bien avant que le document ne se déclenche). Ces améliorations sont appliquées en fonction des paramètres par défaut de jQuery Mobile, qui sont conçus pour fonctionner avec des scénarios communs. Si les modifications apportées aux paramètres sont nécessaires, elles sont faciles à configurer.

L'événement mobileinit

Lorsque jQuery Mobile démarre, il déclenche un événement mobileinit sur l'objet document. Pour annuler les paramètres par défaut, liez-vous à mobileinit.

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

Étant donné que l'événement mobileinit est déclenché immédiatement, vous devez lier votre gestionnaire d'événements avant que jQuery Mobile ne soit chargé. Connectez-vous à vos fichiers JavaScript dans l'ordre suivant:

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

Vous pouvez remplacer les paramètres par défaut en étendant l'objet $ .mobile à l'aide de la méthode $ .extend de jQuery.

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

Alternativement, vous pouvez les définir en utilisant la notation de propriété de l'objet.

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

Une page utile pour comprendre le comportement de jjay mobile ajax

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

Pour activer les transitions de page animées, tous les liens qui indiquent une page externe (par exemple, products.html) seront chargés via Ajax.

Les liens qui indiquent d'autres domaines ou qui contiennent rel = "external", data-ajax = "false" ou les attributs de cible ne seront pas chargés avec Ajax. Au lieu de cela, ces liens provoqueront un rafraîchissement complet de la page sans transition animée. Les deux attributs (rel = "externe" et data-ajax = "false") ont le même effet, mais une signification sémantique différente: rel = "externe" doit être utilisé lors de la liaison vers un autre site ou domaine, tandis que data-ajax = " False "est utile pour simplement opter pour une page dans votre domaine d'être chargée via Ajax.

La désactivation d'une solution par page fonctionne bien avec data-ajax = "false" sur la balise Anchor