Include javascript

Résolu
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 - 11 mars 2007 à 05:39
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 - 17 mars 2007 à 16:50
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

Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
17 mars 2007 à 16:50
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.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 mars 2007 à 08:49
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 />
0
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
11 mars 2007 à 18:04
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.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 mars 2007 à 10:04
>>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 />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 mars 2007 à 11:05
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 />
0
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
12 mars 2007 à 20:57
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.
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
12 mars 2007 à 22:05
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)
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
12 mars 2007 à 22:09
1000 Excuses il faut lire...
document.body.appendChild(O_Script);

;0)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 mars 2007 à 07:07
>>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 />
0
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
13 mars 2007 à 21:57
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.
0
Rejoignez-nous