Include javascript [Résolu]

Signaler
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
-
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
-
Bon c'est probablement une des rares fois que je poses une question ici, mais j'ai quelque chose qui m'embête sérieusement.

Bon pour faire une histoire courte voici comment se présente mon problème. J'ai un include d'un script à faire à plusieurs reprises à des moments différents donc impossible de les mettre d'avance dans le header. Donc, m'est venu une idée pour le include :

script = document.createElement('script');
script.setAttribute('type','text/javascript');
script.setAttribute('src',data_path+'_'+lvl_id+'.s');
document.getElementsByTagName('head')[0].appendChild(script);

À partir de là le code fonction comme il le faut sur Firefox, mais pas pour Opéra qui le gère différement et qui produit un résultat plutôt bizaroïde.

Deuxième tentative qui est senser faire la même chose que la première :

txt = httpRequest();
txt.open('GET',data_path+'_'+lvl_id+'.s',false);
txt.send(null);
eval(txt.responseText);

La le même résultat bizarre, mais pour les deux navigateurs. Quelqu'un à la moindre idée pourquoi, le résultat est différent pour quelque chose qui est senser être plus ou moins pareil et produire le même résultat ?

10 réponses

Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
7
Bon après plusieurs testes débogguage, j'ai fini par comprendre pourquoi les deux méthodes donnaient un résultat différent.

Avec mozilla quand on fait un include avec la méthode sans eval le code ne s'exécute pas tous à fait en même temps que si on le fait avec la méthode eval. Sans le eval le code qui gère les event finit de s'excécuter et après le code includé s'exécute. Avec un eval le code s'exécutait en plein milieu et il y avait de l'interférance avec la fonction qui gerait les event.

Sur opéra il n'y avait pas de différence, car il exécutait peu importe la méthode en plein milieu.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
Bonjour,

"je" ne fais "pas tout à fait" la même chose,
      et ça fonctionne avec FireFox,Internet Explorer,K-Meleon,Opera.
setAttribute ne réagit pas pour tous pareillement ?

<HTML>
<HEAD>
<TITLE></TITLE>
<script type="text/javascript">
function Inclure(fichier)
{
    var scr = document.createElement("script");   
    scr.type = "text/javascript";   
    scr.src  = fichier;   
    var tet = document.getElementsByTagName("head");   
    tet[0].appendChild(scr);
}
</script>
</head>

<script type="text/javascript">
    Inclure("http://marcel-bultez.chez-alice.fr/initial/DatHeu.js");
</script>
<!-- doit afficher la date et l'heure dans id="ldj" et "lh" -->

</HTML>

<hr />


Cordialement            Bul         [mon Site]     [M'écrire]           




<hr />
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
7
La solution est peut-être intéressante, mais après quelques petits tests rapide, le résultat reste globalement le même que le premier résultat, soit Firefox ça fonctionne bien et Opéra non.

Ce que j'aimerais plus comprendre c'est en quoi les deux méthodes peuvent changer quelque chose au fonctionnement global d'un script ? Le include ce fait bien dans les deux cas, sauf que dans un je suis incapable de comprendre ce qui ce passe avec le code et l'autre tous ce passe comme il le faut.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>après quelques petits
tests rapides, le résultat reste le même
>>Firefox ça fonctionne bien et Opéra non.
   



avec ton script chargé dynamiquement alors, probablement.
         car avec "mon" exemple, ça marche sur tous les navigateurs cités, sans soucis
          enfin... chez moi.

    quelque chose de particulier dans ce script chargé ?

>>en quoi les deux méthodes peuvent-elles changer quelque chose au fonctionnement d'un script ?
    à priori, ça ne devrait pas changer.
            ( sauf setAttribute avec lequel j'ai déjà eu des problèmes, mais ça ne change pas
               non plus le fonctionnement d'un script )






<hr />



Cordialement            Bul         [mon Site]     [M'écrire]           




<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
petite remarque, mais tu dois savoir...
    le script ajouté ne sera exécutable qu'à "la fin du script courant"
    ( celui qui l'inclus ), d'après ce que j'ai lu.. je ne sais plus où...



<hr />




Cordialement                Bul             [mon Site]         [M'écrire]           




<hr />
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
7
le script ajouté ne sera exécutable qu'à "la fin du script courant"
( celui qui l'inclus ), d'après ce que j'ai lu.. je ne sais plus où...




C'est exactement
ce que je cherches à faire, présisement je cherches à charger des
données dynamiquement seulement lorsqu'un événement ce produit.


À priori pour la différence entre les deux résultats, je n'ai rien
changer d'autre dans le script. C'est pourquoi je suis à peu près sur
qu'un partie du problème et de la solution vient de ces quelques lignes.


Bon si tu le veux je peux t'envoyer mon projet via rapidshare ou autre si tu y tiens, mais sinon je continuer à débogguer.
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
B
onsoir...
j'aurais plutôt voté pour

//-------------------------
function Add_Script( srce_){
  var O_Script = document.createElement("script");
  O_Script.type = "text/javascript";
  O_Script.src  = srce_;
  document.appendChild(O_Script);
}

en faisant l'ajout au document, mais le problème n'est surement pas là...
;0)
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
1000 Excuses il faut lire...
document.body.appendChild(O_Script);

;0)
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>C'est exactement ce que je
cherches à faire

    c'est à dire ? excécuter le script ajouté dans le scritp qui l'ajoute ?
    si oui, je pense qu'il va falloir faire autrement ( d'après ce que j'ai lu !
       mais rien n'est moins sûr ! )
>>je cherches à charger des données
dynamiquement
    uniquement des données ?
    pourquoi pas xml et xsl ?
   
    ou tout dépend, mais avec shtml on peut aussi inclure : <!--#include file="monFicher.shtml" -->




<hr />



Cordialement            Bul         [mon Site]     [M'écrire]           




<hr />
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
7
Pour les données, il s'agit de quelque chose de plus complexe que de simple valeur comme des fonctions javascript qui vont parle la suite être appeller pour charger d'autres choses.

Pour le problème en lui-même, il reste le même, mais après quelques tests de débogguage je me suis rendu compte que quand le script fonctionnait comme je voulais sur Firefox, il y avait quand même quelques choses qui clochait dans le fonctionnement, alors je supposes que le problème est plus complexe et qu'il implique d'autres parties du code.

Étant donné que le code est assez complexe en sois et que je n'ai peut-être pas cibler le problème dans son entier, il préférable que je continues le débogguage moi-même. Pour le projet il s'agit d'un petit jeu à la Zelda, fait en javascript avec les canvas pour l'affichage. Si vous tenez à y jeter un coup d'oeil voici un lien pour le télécharger :

http://rapidshare.com/files/20885820/RPG.rar

Je vous remercie de votre aide.