IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Fonction JS qui ne fonctionne pas sous Chrome


Sujet :

jQuery

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Fonction JS qui ne fonctionne pas sous Chrome
    Bonjour à tous !

    Je bloque depuis un moment et j'espère que vous pourrez m'aider.

    J'ai créé une fonction afficher que voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function afficher(data){
    		$("#content").empty();
    		$("#content").append(data);
    		$("#content").fadeIn(1000);
    }
    Cette fonction fonctionne parfaitement sous Firefox et IE mais pas sous chrome !

    Avez-vous une idée pour m'éclairer ?

    Merci d'avance !

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Avez-vous une idée pour m'éclairer ?
    J'imagine que te dire d'allumer une lampe ne te conviendra pas...
    Alors non, pas d'idée.

    Maintenant, si tu en disais plus sur le contexte : comment cette fonction est appelée, quel est le code HTML en rapport, que te dis la console des outils de développeurs, etc. on pourrait certainement t'aider mieux !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Je ne suis pas plus éclairé que Bovino, mais déjà : $( "#content" ).html( data ).fadeIn( 1000 );.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour et merci de vos réponses.

    Cette fonction afficher(data) que je vous ai décrite est appelé ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $(document).ready(function() {
    	$(".liens").click(function(){
    		page = $(this).attr("href");
    		$.ajax({
    			url : "pages/"+page,
    			cache:false,
    			success:function(html)
    			{	afficher(html);	},				  error:function(XMLHttpRequest,textStatus,errorThrown)
    			{	alert("Une erreur est survenue pendant le chargement de la page demandée");	}
    			})
    		return false;
    	})
    Cette fonction me permet de naviguer sur les pages de mon site uniquement en rechargeant la partie <div id="content">...</div>.
    Pour ça je récupère le lien de la page puis j'efface le content de la page en cours pour le remplacer par le content de la page nouvelle.
    Sur Chrome, c'est la fonction append(data) qui ne marche pas puisque le content s'efface bien, mais il n'affiche pas le content de la nouvelle page.

    J'espère avoir été plus clair !

    (Effectivement, une lampe m'aidera pas plus que ça)

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Le code de cette transaction AJAX est très approximatif (get ? post ? datatype ?, pourquoi cache false ?).

    Je vous conseille la lecture de la FAQ et plus particulièrement : Comment dois-je formuler une requête AJAX ?

    J'écrirais plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $( ".liens" ).click( function(){
    	var monURL = "pages/" + $(this).attr("href"); // var ! 
     
    	$.post( monURL, function( data, textStatus, jqXHR ) {
    		// debug
    		// console.log(data, textStatus, jqXHR);
     
    		// succès de la transaction, on doit traiter le contenu de data
     
                                    $( "#content" ).html( data ).fadeIn( 1000 );
     
    	}, "html" ).error( function( jqXHR, textStatus, errorThrown ){
    		// debug
    		// console.log(jqXHR, textStatus, errorThrown);
     
    		// échec de la transaction, gérer la catastrophe
     
                    //alert( "Une erreur est survenue pendant le chargement de la page demandée" );
     
    	});
     
    	return false;
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci danielhagnoul pour cette solution mais elle ne semble pas résoudre mon problème.

    Sur Firefox et IE ça charge bien les pages demandées dans le content. Mais toujours pas sur Chrome... Il efface le contenu du #content mais n'affiche pas le nouveau.

    Est-ce que Chrome gère le Ajax ?

  7. #7
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Est-ce que Chrome gère le Ajax ?
    Bien entendu !

    Comme toujours (on se lasse à le répéter) sans le contexte (HTML, CSS, JS ou un lien vers la page web) il est impossible d'examiner votre problème.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Pour le contexte, je vous ai déjà dit.

    Dans mon HTML toutes mes pages sont de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
    ...
    <body>
    <div id="content"> 
    /*contenu*/
    </div>
    </body>
    </html>
    Niveau CSS pour ce content :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #content 
    	{ 	width: 920px; 
    		height: auto; 
    		margin: 0 auto; 
    		background: url(img/bg/content-2.png) repeat-y; 
    		padding: 10px 25px 10px 25px; }
    Rien de spécial donc. Les menus de ma page sont de la forme <a class="liens" href="..." title="...">Menu</a>

    Il n'y a pas de CSS associé à .liens car mes menus sont dans des balises <ul> donc je les ai mis en forme avec ça. Puis dans une page liens.js que j'ai appelé dans la page HTML, j'ai inséré le code que j'avais déjà décris et que j'ai modifié avec vos conseils.

    Cette fonction JS me permet d'éviter le chargement de toute la page puisque seul le #content change.

    Donc après je sais pas quoi vous montrer de plus... Comme je l'ai dit, sur Firefox et sur IE il n'y a pas de problème. Au clic d'un lien du menu, le content change.
    Sur Chrome, le content se vide et reste vide. Donc je ne sais pas du tout. Et je ne peux pas me permettre de rendre un code qui ne fonctionne pas sous Chrome. Mais j'avoue que je bloque. Ajax est tout nouveau pour moi.

    Désolé si je ne suis pas assez clair. Je fais de mon mieux. Merci de l'attention que vous portez à mon problème.

    Ps : Je travaille en local, je ne peux donc pas vous passer de lien vers les pages.

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Il existe des outils de développeur sur Chrome (Outils > Outils de développement).
    As-tu des messages d'erreur dans la console ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Google Maps] Fonction qui ne fonctionne pas sous chrome mais bien sous firefox
    Par Msysteme dans le forum APIs Google
    Réponses: 1
    Dernier message: 04/06/2015, 20h29
  2. Fonction de redirection ne fonctionne pas sous Chrome
    Par Azuken dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 22/02/2012, 11h13
  3. [MooTools] Effet slide qui ne fonctionne pas sous chrome
    Par micker dans le forum Bibliothèques & Frameworks
    Réponses: 24
    Dernier message: 29/06/2011, 17h12
  4. Fonction javascript qui ne fonctionne pas sous IE
    Par jules_diedhiou dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/03/2009, 20h10
  5. [Javascript] Fonction qui ne fonctionne pas sous Opera et Safari
    Par frechy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/02/2007, 10h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo