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

JavaScript Discussion :

Programme long !


Sujet :

JavaScript

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut Programme long !
    Bonjour

    J'ai un bout de code long à exécuter. Chaque fois, j'ai le droit au warning m'indiquant qu'il est possible que le code soit bloqué !
    Je dis de continuer et c'est bon. Comment faire pour palier à ce problème ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    msg_s8=window.open("URL","S8")
    while(document.getElementById("drapeau").innerHTML=="Charge")
     setTimeout("i++",2000);
    suite du programme qui récupèrela donnée document.getElementById("drapeau").innerHTML=="Charge"
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    il manque un peu certaine donnée je pense
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    au lieu d'un setTimeout() dans un while, utilise plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setInterval("i++",2000);
    Le résultat est le même

    EDIT : Arf : le résultat est le même, mais tu perds ton test.
    Au lieu du simple i++, fais une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function ta_fonction() {
    if (document.getElementById("drapeau").innerHTML=="Charge")
    i++;
    else
    clearInterval(le_timer);
    }
    Tu pourras l'appeler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var le_timer = setInterval("ta_fonction()", 2000);
    EDIT BIS : pour un résultat strictement identique, c'est en fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function ta_fonction() {
    i++;
    if (document.getElementById("drapeau").innerHTML != "Charge")
    clearInterval(le_timer);
    }
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  4. #4
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut
    Pour en dire plus :
    1) Je teste si une page a fini de se télécharger. Quand elle a fini, elle modifie l'attribut document.getElementById("drapeau").innerHTML de la page appelante. Comme la page est longue à charger (beaucoup d'appel MySQL en php), l'attente est longue.
    2) Je ne peux pas utiliser de fonctions Enfin, il me semble, je teste greasemonkey que j'ai trouvé dimanche.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par troumad Voir le message
    2) Je ne peux pas utiliser de fonctions


    Ca serait quand même étonnant ...

    Si c'est le cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le_timer = setInterval("if document.getElementById('drapeau').innerHTML=='Charge') i++; else clearInterval(le_timer);", 2000);
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    et sur un onload ??
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    et sur un onload ??
    J'ai loupé quelque chose ?
    Ca changerait quoi ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  8. #8
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut
    Je viens de regarder du code, il y a des appels à des fonctions de temps en temps. Donc, je devrais y arriver aussi.
    Dès que j'ai le temps je regarde pourquoi mon appel ne passait pas, j'ai un machin du genre fonction inconnue.

    Par contre, pour l'astuce avec le timer, il me semble qu'elle ne me permettra pas d'arrêter le programme le temps du téléchargement (je rajoute une chose au premier code).
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  9. #9
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    E.Bzzz

    Citation Envoyé par troumad Voir le message
    1) Je teste si une page a fini de se télécharger. Quand elle a fini, elle modifie l'attribut document.getElementById("drapeau").innerHTML de la page appelante. Comme la page est longue à charger (beaucoup d'appel MySQL en php), l'attente est longue.

    ou c'est pt moi mais s'il cherche a tester le chargement d'une page ....
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par troumad Voir le message
    Par contre, pour l'astuce avec le timer, il me semble qu'elle ne me permettra pas d'arrêter le programme le temps du téléchargement (je rajoute une chose au premier code).
    Normalement si.
    Le timer est identifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le_timer = setInterval(....
    Tu peux donc l'arrêter "nominativement"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clearInterval(le_timer);
    puis le relancer à volonté (en testant qu'il n'est pas déjà actif : if ( ! le_timer) ... )

    EDIT (suite à ton edit du 1° post) : ton timer "tournera" en parallèle de tes chargements et modification de drapeau. C'est ce drapeau qui permettra la communication entre les 2 traitements ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    ou c'est pt moi mais s'il cherche a tester le chargement d'une page ....
    Avec un "drapeau" modifié via son innerHTML, je pencherais plutôt pour un (voire "des", visiblement) chargement(s) Ajax

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  12. #12
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    +1 pour les méthodes de load ajax
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  13. #13
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut
    Ajax ?
    J'en connaissais un pour le ménage domestique !

    Sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function ta_fonction() {
    if (document.getElementById("val2_bernard_siaud").innerHTML=="Charge")
    i++;
    else
    clearInterval(le_timer);
    }
     
    var le_timer = setInterval("ta_fonction()", 2000);
    génère avec la console javascript des erreurs ta_fonction is not defined
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  14. #14
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Au temps pour moi ...

    J'en connaissais un pour le ménage domestique !
    Là c'est plutôt pour le manège webistique ...

    Si c'est un simple chargement de page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="alert('Fini !!');">
    Mais ça dépend : que te permet ton traitement actuel en "attendant" la fin du chargement ?

    PS : le_chomeur, c'est toi qu'avait bon

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  15. #15
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut
    Le but est de savoir quand la page a fini de se charger car à la fin, elle modifie une valeur dans la page appelante.
    Après, mon programme continue automatiquement avec ce nouveau paramètre. Donc, le alert() ne génère rien d'automatique.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  16. #16
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par troumad Voir le message
    Donc, le alert() ne génère rien d'automatique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="opener.document.getElementById('id_input').value=la_nouvelle_valeur;">
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  17. #17
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut
    Oui, ça j'y arrive à mettre ce que je veux sur la page appelante !

    Mais, mon problème, c'est de repérer que c'est arrivé pour reprendre la suite des traitements.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  18. #18
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    pas compris ta phrase, reprendre les traitements ???
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  19. #19
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par troumad Voir le message
    Mais, mon problème, c'est de repérer que c'est arrivé pour reprendre la suite des traitements.
    Ben ce que je t'ai donné ci-dessus a normalement le même résultat que ton traitement : à la fin du chargement de la page (onload) il met à jour un élément de la page appelante (opener). J'ai pris l'exemple d'un input, mais tu peux aussi mettre à jour une variable (globale) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="opener.la_variable=la_nouvelle_valeur;">
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  20. #20
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    pas compris ta phrase, reprendre les traitements ???
    J'appelle une page extérieure et j'ai besoin d'une information venant de cette page pour continuer.
    Donc, mon programme passe en phase d'attente tant qu'il n'a pas le retour.

    Il faudra que je teste :
    <body onload="opener.la_variable=la_nouvelle_valeur;">
    C'est pas mal aussi.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

Discussions similaires

  1. arret des programmes long, avant la fermeture de vista
    Par ledisciple dans le forum Windows Vista
    Réponses: 8
    Dernier message: 21/09/2011, 09h09
  2. Programme java long à démarrer parfois
    Par smith_dev dans le forum Langage
    Réponses: 15
    Dernier message: 09/01/2009, 16h13
  3. [Web Service] Programme avec un long temps d'éxécution
    Par whism dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 02/06/2008, 20h30
  4. Programme de recherche temps d'execution trop long
    Par lucas67 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/11/2007, 15h15
  5. Demarage des programmes très long
    Par venegan dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 02/03/2006, 16h50

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