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 :

erreur chargement js & déclaration objet


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut erreur chargement js & déclaration objet
    Bonjour à tous,

    J'ai un ptit gros souci qui deviens assez pénible. Je vous ai fait une petite simulation de mon problème vous pouvez le trouver par ici.
    Donc en gros firebug me dit que l'objet win n'est pas défini alors que je charge le js avant. Par contre si je charge le js hors de la fonction (donc par expl au chargement de la page) ca roule, seulement j'ai besoin que le chargement reste dans la fonction par souci d'optimisation en effet comme on peut le voir je ne charge que le js qui va être utilisé.

    Pour palier le problème j'ai essayé de mettre un setTimetOut sur la déclaration de l'objet seulement de un c'est pas propre et de deux le document.write se fait dans une nouveau document :/ Pour l'instant j'utilise une solution fonctionelle mais qui ne me plait pas du tout je déclare une variable qui dit ce que on veut charger et une fonction au chargement de la page charge les js correspondant à cette variable.

    Voilà je sais pas si j'ai était assez clair sur mon problème, dites moi si vous avez besoin d'éclaircissement. Merci d'avance ^^

  2. #2
    Expert éminent

    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
    Par défaut
    Bonjour (donc),
    et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <html>
    <head>
    <script type="text/javascript" src="prob.js"></script>
    <script type="text/javascript">
    function test_win() {
    bigProb.do("win");
    }
    </script>
    </head>
     
    <body onload="test_win();">
    </body>
    </html>
    ?

    A+

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    Même souci

  4. #4
    Expert éminent

    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
    Par défaut
    Que souhaites-tu faire avec ton ouUne nouvelle instance de ta fonction win() (que justement tu n'as pas chargée, donc inconnue) ?

    A+

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    Oui voilà je souhaite créer une instance pour pouvoir après travailler dessus. ici j'ai réécris le code pour vous proposer un exemple minimaliste de mon problème.

    Le souci est que si le js est chargé ! Avec firebug dans l'onglet "Net" par expl on peut voir la requête vers le .js et on voit le contenu il la donc bien chargé, seulement je sais pas si c'est au niveau du navigateur ou quoi ce soit peu importe mais il ne connais pas encore la classe :/

  6. #6
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    J'ai pas testé, ya ptete des erreurs de syntaxe sur l'appel à this.do mais j'ai eu le meme problème dans la semaine a vouloir charger dynamiquement un script et pouvoir l'exécuter juste apres, que j'avais résolu de cette façon

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    loadjs = function(url, onComplete) { 
    	var h = document.getElementsByTagName('head').item(0); 
    	var s = document.createElement('script'); 
    	s.src = url+".js"; 
    	s.type = "text/javascript"; 
    	h.appendChild(s); 
     
            /* IE */
    	s.onreadystatechange = function () {
    	    if (s.readyState == 'loaded'){
    	       	if (typeof onComplete == "function"){
    	       		onComplete();
    	       		s = null;
    	       	}
    	    }
           }
     
    	/* FF */
    	/* attention, sous FF2, si le fichier a charger existe mais qu'il est vide, 
    	   l'evenement onload n'est pas lancé, ce qui peut conduire à un blocage */
    	s.onload = function(){	
    		if (typeof onComplete == "function"){
    		   	onComplete();
    		       s = null;
    		}
    	}	 
     };
     
    this.do = function(type) {
    	loadjs(type, function(_type){
                                return function(){
    	                      switch(_type) {
    			        case "win":
    				  var test = new win;
    			       case "cool":
    				 var test = new prob;
    		             }
                              }(type)
            });
     
    }

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    Pas bête comme solution merci !
    Après quelques tests ça ne marche pas. En placant quelques alert je vois qu'il passe bien partout seulement le js n'est pas chargé et en mettant une alert au lieu du switch tout ca rien ne se fait donc l'appel à onComplete() foire il n'execute pas la fonction passée.
    Je regarde encore de mon coté en testant quelques trucs, si vous avez des idées n'hésitez pas

  8. #8
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    this.do = function(type) {
    	loadjs(type, function(_type){
                                return function(){
    	                      switch(_type) {
    			        case "win":
    				  var test = new win;
    			       case "cool":
    				 var test = new prob;
    		             }
                              }
            }(type));
    J'avais mis le paramètre au mauvais endroit, chez moi ca marche comme ca

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    Au temps pour moi, ca marche. Mais sous firefox la page continue de charger (rond qui tourne) ca peut être un souci :/ Est ce du au s=null qui ne marcherai pas? Aussi sous ie ou opera ca ne marche pas, par contrainte j'ai besoin d'etre au top niveau compatibiltié enfin ca c'est un autre problème à voir après..

  10. #10
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    pour ffx
    en fin de fonction
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Bonne remarque. Sur la fonction que j'ai chez moi, j'ai pas le document.close() et pourtant j'ai plus le rond qui tourne sous FF.

    Par contre, après avoir testé la tienne, je me souviens qu'au moment de fermer l'onglet le rond tournait... A voir donc.

  12. #12
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    heu le document.close() c'est un peu salace comme solution lol, de plus ca ne me permet plus de travailler sur le document par la suite :/

    C'est vraiment bizarre que sur la tienne ca roule mais la mienne non pck le truc que je vous ai présenté est vraiment basic ya pas grand chose dedans.
    Et en effet en foutant une alerte en fin de fonction elle ne s'execute pas c'est donc bien qu'il reste bloqué (d'ou le rond qui tourne).
    Rien qui diffère entre les deux versions? Si quelqu'un a une idée je suis preneur pck je vois pas moi, bien sur je continue à chercher en parallèle

  13. #13
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    ben biensur que si tu peux traveiller sur le document ensuite ...

    le open est implicite ...
    il n'y a que pour FFX que le close ne l'est pas ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Pour le pb sous IE, ca doit venir du nom de ta fonction (do, un mot clé du langage). Je me suis déja fait avoir avec un propriété qui s'appelait class, ca faisait planter IE.

    Pour le pb sous Opéra, j'ai pas testé, j'en avais pas besoin ^^

  15. #15
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Rien qui diffère entre les deux versions?
    Nan, c'est la même chose. Par contre, je ne l'ai pas vraiment testé sur un seul chargement (ou du moins, je ne m'en souviens plus), j'ai une autre fonction qui me permet de charger plusieurs scripts à la suite, ca vient peut etre de la.

    J'essaierai de regarder un peu plus en détail.

  16. #16
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    Ah bon t'es sur? Pck quand je place un document.write après le document.close() il me le fait sur un nouveau document..

    Bien vu pour do c'est ca j'y avais pas pensé =p

    Edit : C'est vraiment chiant les problèmes comme ca lol, firefox ca marche mais il continue à charger, opera ca marche nikel, ie et safari marche pas..
    Du coup impossible de savoir ce qui foire :/
    Merci en tout cas c'est une solution qui marche pas pour l'instant mais jpeux continuer à chercher dessus, là je quitte l'ordi mais le problème est tjs là alors si vous pouvez m'aider encore merci

  17. #17
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    document.write
    ça efface le conteu de la page, ce n'est pas stable ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  18. #18
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    J'étais parti de cette discussion pour faire ma fonction.
    Si tu regardes dans les commentaires, ya un gars (Neal) qui donne une variante qui a l'air pas mal et crossbrowser, tu devrais ptete y jeter un oeil.

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/07/2006, 15h48
  2. Numero erreur chargement XML
    Par julio84 dans le forum ASP
    Réponses: 2
    Dernier message: 22/06/2006, 16h16
  3. Erreur chargement de symbole avec Axis
    Par badr16 dans le forum C++
    Réponses: 4
    Dernier message: 14/06/2006, 16h55
  4. Réponses: 6
    Dernier message: 20/11/2005, 02h53
  5. [DOM XML] Erreur fonction load() d'un objet dom??
    Par ribrok dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/10/2005, 11h43

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