Sujet : jquery mobile pagebeforeload
$( document ).bind( "pagebeforeload", function( event, data )
Jquery : Le forum FR d'entraide dédié à jQuery
LE forum français de jquery
Jquery : Le forum FR d'entraide dédié à jQuery » Vos participations » jquery mobile pagebeforeload
Pages 1
Vous devez vous connecter ou vous inscrire pour pouvoir répondre
$( document ).bind( "pagebeforeload", function( event, data )
En fait, j'ai 2 pages html, l'une contient un lien vers le second, mais je clique sur le le lien, je vais bien sur la 2nde page mais les scripts sur cette seconde page ne sont pas exécutés (il faut actualiser la page pour qu'ils soient exécutés). En lisant plein de sujets, je crois que c'est parce que le DOM n'est pas rechargé et que pagebeforeload est peut être la solution.
La solution serait plutôt d'utiliser, pagebeforecreate (A voir selon le besoin). En fait cet évènement permet d'exécuter un script avant l'amélioration de la page, car si ton script rajoute des données supplémentaires qui doivent être "reformattés" par jQuery Mobile, cela est la bonne solution.
Pour exemple, dans la documentation française, j'ai eu besoin de rajouter un bandeau en haut de la page pour aller vers le forum et la documentation de jQuery (Bandeau noir avec deux boutons : Documentation française jQuery et Forum français dédié à jQuery)
Imaginons que ta deuxième page à le div suivant avec la classe "type-page2" :
<div data-role="page" class="type-page2">
Maintenant, tu veux rajouter un évènement qui sera exécuté seulement lorsque cette page sera chargée avant l'amélioration de jQuery Mobile.
Rajoutes un script js comme suit nommé "jqm.js" :
$( document ).bind( "mobileinit", function() {
// définition d'un bandeau d'entête de type ui-bar avec le nuancier a
var entete = $( '<div>' , {
'class': "ui-bar ui-bar-a"
});
// Ajout dans ce div du texte et de deux boutons
entete
.append( "<h1>JQuery Mobile, documentation en français </h1>" )
.append( "<a href='http://www.jquery-fr.com' class='ui-btn-right' data-mini='true'>Documentation française jQuery</a>" )
.append( "<a href='http://www.jquery-fr.com/forum' class='ui-btn-right' data-mini='true'>Forum français dédié à jQuery</a>" );
// Entête pour le site mobile.jquery-fr.com
$( 'div.type-page2' ).live( 'pagebeforecreate',function(event){
$( "div.type-page2" ).prepend( entete );
});
});
et places le ainsi dans la page html (Après jquery.js et avant jquery.mobile.js) :
<script src="/js/jquery.js"></script>
<script src="/js/jqm.js"></script>
<script src="/js/jquery.mobile.js"></script>
Pour le jqm.js, voici l'explication : on définit la liaison de la page 2 avec l’évènement pagebeforecreate en sélectionnant la classe "type-page2".
Tout cela doit être définie dans $( document ).bind( "mobileinit", function() { } qui permet que cette liaison soit faite dès le début de l'initialisation de jQuery Mobile.
J'espère que mon exemple t'aideras.
Merci.
Voila ce que je fais:
page1.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Page 1</title>
<!--
<link rel="stylesheet" href="jquery.mobile-1.0.1.min.css" />
<script src="jquery.js"></script>
<script src="jquery.mobile-1.0.1.min.js"></script>
-->
</head>
<body>
<p align="center">
<a href="page2.html">Page 2</a>
</p>
</body>
</html>
et pour page2.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Page 2</title>
<link rel="stylesheet" href="jquery.mobile-1.0.1.min.css" />
<script src="jquery.js"></script>
<script src="jqm.js"></script>
<script src="jquery.mobile-1.0.1.min.js"></script>
</head>
<body>
<div data-role="page" class="type-page2">
<p align="center">page test</p>
</div>
</body>
</html>
et pour jqm.js est le même que celui que tu m'as proposé. Ça marche comme cela ( si je commente l'importation de fichier des fichiers jquery -->page1;html) par contre si je supprime les commentaires (donc j'importe bien les fichiers jquery), la page2 n’exécute pas le script sauf si j'actualise. Je ne sais pas pourquoi, si t'as une idée....
Personne n'a d'idée? J'ai toujours pas trouver la solution.
Bonsoir,
Désolé, je n'ai jamais travaillé sur jQuery Mobile
Avez-vous essayé avec un autre évènements, à la place de "pagebeforeload" ?
Lochar,
<link rel="stylesheet" href="jquery.mobile-1.0.1.min.css" />
<script src="jquery.js"></script>
<script src="jqm.js"></script>
<script src="jquery.mobile-1.0.1.min.js"></script>
Pages 1
Vous devez vous connecter ou vous inscrire pour pouvoir répondre
Jquery : Le forum FR d'entraide dédié à jQuery » Vos participations » jquery mobile pagebeforeload
Propulsé par PunBB, supporté par Informer Technologies, Inc.