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 :

Boucle dans une fonction javascript


Sujet :

jQuery

  1. #1
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut Boucle dans une fonction javascript
    Bonjour à tous,

    Je charge dans une DIV une page HTML grace à la fonction .load de jquery.
    J'ai besoin de récupérer le titre de la page chargée, mais je me heurte à un petit problème ...

    Mon code :
    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
    24
    25
    26
    27
    28
    29
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <HEAD>
    <TITLE>Page Principale</TITLE>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script src="jquery.js"></script>
     
    <script>
    	function test(url) {
    		//var TitreDiv == "";
    		$('#test').load(url);
    		do {
    			TitreDiv = $('#test').find("title").text();
    		    }
    		while (TitreDiv == "");
    		alert("Titre de la page chargée = "+TitreDiv);
    		return false;
    		};
    </script>
     
    </HEAD>
     
    <html>
    <BODY>
    	<div id="test"><a onclick="test('erreur2.html');">Lien rapport</a></div>
    </BODY>
    </HTML>
    Je boucle donc sur ma recherche de titre tant que celui-ci est égal = "" (pour laisser le temps à la page de se charger), mais actuellement, j'ai un message d'erreur :
    "Un script sur cette page est peut-être occupé ou ne répond plus. Vous pouvez arrêter le script maintenant ou attendre pour voir si le script se terminera."
    Si je clique sur "continuer le script", j'ai bien mon message d'alerte avec le titre de la page chargée dans le Div.

    J'ai beau essayer plusieurs chose, je n'arrive pas à m'en ... une piste que je puisse suivre ?

    Merci d'avance de votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    message subliminal:
    la methode load de jquery possède un callback ...

  3. #3
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut
    Super, merci pour la piste

    Ça fonctionne ...

    Il ne me reste plus qu'à trouver pourquoi mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TitreDiv = $('#test').find("title").text();
    fonctionne sous firefox, mais pas sous IE8 (les 2 seuls navigateurs autorisé dans l'entreprise)

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    peut être parce que la balise title n'est pas chargée ?

    fais un alert du innerHTML dans le callback

    peut etre egalement parce que le DOM ne comprend pas une balise title a cet endroit du code ??

  5. #5
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut
    Bien vu !

    Je "perd" la balise TITLE dans ma page chargée sous IE8

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Erreur classique : la boucle while qui attend. Ça occupe tout le temps de calcul pour rien au final. De plus, suivant l'âge du navigateur, ça peut afficher une alerte qui va éveiller la méfiance de l'utilisateur (

    ), ou carrément geler la fenêtre.

    De manière générale, il ne faut pas utiliser de boucle pour attendre quelque chose en JavaScript. Au pire, utiliser un setInterval.

    http://fr.wikipedia.org/wiki/Attente_active

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/06/2006, 13h48
  2. [PHP-JS] une variable php dans une fonction javascript
    Par megapacman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2006, 14h08
  3. créer un type dans une fonction javascript
    Par amelhog dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/07/2005, 13h54
  4. créer un type hidden dans une fonction javascript
    Par amelhog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/05/2005, 12h17
  5. variable dynamique dans une fonction javascript
    Par Shivaneth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/04/2005, 15h58

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