begin process at 2012 05 29 09:04:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

getElementsByTagName("script") Sur un document traité par XSLT et rendu par AJAX


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

getElementsByTagName("script") Sur un document traité par XSLT et rendu par AJAX

lundi 19 avril 2010 à 19:18:01 | getElementsByTagName("script") Sur un document traité par XSLT et rendu par AJAX

rivarol89

Bonjour à tous,

j'ai le problème suivant :

j'utilise Ajax (prototype et scriptaculous) pour générer un formulaire transcrit par XSLT préalablement décrit dans un document XML :

HTML--->AJAX--->PHP--->XSLTPROCESSOR--->Résultat dans un div (id="ici") du HTML

L'intrigue : le résultat du XSLTPROCESSOR contient du code javascript :
Code XML :
<script language="JavaScript">blablabla....</script>


Bien sur ce code ne peut être exécuté lors de l'affichage du résultat dans le HTML.
Du coup je fais ceci a partir du HTML qui lance la requete AJAX :

Code Javascript :
var scripts = document.getElelementById('ici').getElementsByTagName('script')

for (var i=0; i<scripts.length; i++) {
     eval(scripts[i].text);
}


Ce qui théoriquement devrait exécuter mon code javascript contenu dans le résultat.
Il n'en n'est rien !

En effet : la balise <script> semble INTROUVABLE au yeux de getElementsByTagName !(dailleur la suite du code javascript n'est pas exécuté, il y a quelque chose ici que javascript n'aime pas...)

Le plus bizarre c'est que lorsque je fais un getElementsByTagName sur une balise
quelconque du résultat, eh ben la il, trouve...

le javascript est définit ainsi dans le XSL :
Code XML :
.
.
.
<xsl:template match='text'>
<input type="text" id="{@id}"/>
<script language="JavaScript">
   <![CDATA[
         alert("TEST");
   ]]>
</script>
</xsl:template>
.
.
.


Ca fait déjà un certain temps que je suis sur le problème.
Si quelqu'un peut m'aider avant que je ne trouve la solution dans 5 jours, ou que je n'abandonne mon projet, ce serait vraiment super et je lui serait très reconnaissant !

Merci d'avance.
Cordialement.
lundi 19 avril 2010 à 19:21:04 | Re : getElementsByTagName("script") Sur un document traité par XSLT et rendu par AJAX

rivarol89

Je tiens a préciser que le :
Code Javascript :
var scripts = document.getElelementById('ici').getElementsByTagName('script')

for (var i=0; i<scripts.length; i++) {
     eval(scripts[i].text);
}

Est exécuté a l'occasion de l'évènement OnComplete de la requête AJAX.
lundi 19 avril 2010 à 19:25:39 | Re : getElementsByTagName("script") Sur un document traité par XSLT et rendu par AJAX

rivarol89

A merde, je me suis planté de section... je savais pas où mettre le sujet alors j'ai vu GENERAL et j'ai choisi ça.

Désolé.
Peut on déplacer le sujet ?
lundi 19 avril 2010 à 19:57:24 | Re : getElementsByTagName("script") Sur un document traité par XSLT et rendu par AJAX

PetoleTeam

Membre Club
Bonjour,
juste en passant, as tu essayé de mettre une ID sur la balise SCRIPT et de la récupérer avec getElementById

;O)
lundi 19 avril 2010 à 20:02:11 | Re : getElementsByTagName("script") Sur un document traité par XSLT et rendu par AJAX

rivarol89

Oui, après il suffit de passer par getElementById, Ça marche mais bon le problème sera
que je ne connaitrais pas le nombre de balises script

enfin je pourrais faire comme ca en bidouillant un peu, ca ne serait pas vraiment correct
(w3c et tout ca...) sinon j'aimerais quand meme comprendre pourquoi la variable scripts
reste vide [Undefined]...

Merci quand même
lundi 19 avril 2010 à 23:02:29 | Re : getElementsByTagName("script") Sur un document traité par XSLT et rendu par AJAX

rivarol89

Bon allé Feuk W3C, mon xsl balance une fausse balise <sscript>...bla bla bla...</sscript>
Et le getElementByTagName marche sans pb. je me demande parfois comment les concepteurs de ces méthodes (qui doivent être compétents) font pour ne pas changer un peu les regles du xml W3C and co... Ceci dit si quelqu'un est capable de me dire pourquoi j'ai ce problème je serais content et j'en adopterais la solution.

cordialement.
mardi 20 avril 2010 à 19:07:46 | Re : getElementsByTagName("script") Sur un document traité par XSLT et rendu par AJAX

PetoleTeam

Membre Club
Bonjour,
avec quel explorateur as tu ton soucis ?
j'ai réalisé un petit fichier test et je n'ai pas rencontré de problème pour récupérer les scripts.
Donc apparemment il nous manque quelque chose pour mieux appréhender le problème.

;O)
jeudi 22 avril 2010 à 03:04:03 | Re : getElementsByTagName("script") Sur un document traité par XSLT et rendu par AJAX

rivarol89

j'ai moi même procédé à des test miniatures pour voir si mon probleme ne venait du reste du code, eh ben non c'est la meme histoire. Utilise tu bien ajax ? je procède ainsi :

index.html lance une requette AJAX qui consiste à intéroger un script php en lui postant l'adresse d'un fichier xml et d'un fichier xml, le php Utilise XSLTProcessor pour transcrire
le XML en HTML et le renvoi via un echo.

Sur le OnComplete de la requette AJAX je procede à un getElementsByTagName("script")
à fin de mettre la main sur les script contenus dans le résultat de la requette AJAX (qui n'ont pas été éxécutés étant donné leur incrustation tardive).

C'est ici que ca bloque : getElementsByTagName("script")ne fonctionne pas : le tableau renvoyé est vide.


Du coup j'ai placé le code javascript généré dans le xsl entre les balises <sscript></sscript>
Cette balise n'existe pas ! mais est bien trouvée par getElementsByTagName("sscript") et je peu ainsi exécuter mon code.


Maintenant le problème c'est qu'apparement IE n'a pas l'air d'aimer ca.
Vous m'aideriez beaucoup en m'expliquant d'ou vient le problème car je n'ai toujours pas trouvé.
jeudi 22 avril 2010 à 03:49:03 | Re : getElementsByTagName("script") Sur un document traité par XSLT et rendu par AJAX

rivarol89

Réponse acceptée !
Trouvé !
Prototype gère mon problème en fait :

il suffisait d'ajouter l'option :
Code Javascript :
evalScripts:true


dans mon Ajax.Updater.

j'avais essayé evalJS donné sur le site offciel mais apparement, c'est evalScripts...
Comprit les enfants ? evalJS c'est le mal.

Non plus serieusement evalJS doit être utilisé uniquement si la réponse de la requete AJAX
est du code javascript et uniquement du code javascript. dans le cas contraire, utiliser
evalScripts.

Bonne nuit !
samedi 24 avril 2010 à 10:39:00 | Re : getElementsByTagName("script") Sur un document traité par XSLT et rendu par AJAX

PetoleTeam

Membre Club
Bonjour et merci pour le retour, c'est bon à savoir...

Ce qu'il faut également savoir c'est que lorsque l'on charge un fichier au format HTML dans un DIV IExplorer ne copie dans celui ci que la partie entre les balises BODY, ce qui fait que les scripts ne sont pas repris sauf si ils sont mis juste avant la balise de fin de BODY.

;O)


Cette discussion est classée dans : code, html, document, ajax, getelementsbytagname


Répondre à ce message

Sujets en rapport avec ce message

recupérer le code html d'une selection [ par caviar ] Saluté ! j'ai un petit pb tout bête ...j'aimerai récupérer le code html selectionné lorsqu'un utilisateur fait un surlignage sur ma page ...par exempl Ajax et Javascript [ par DMK04 ] Bonjour à tous,je débute en Ajax, et je souhaiterais savoir une chose :Est-ce que l'on peu "importer" du nouveau code JavaScript via une "requête" Aja AJAX, textarea et envoie de code html [ par Jolafreem ] Bonjour,je développe une interface d'administration en AJAX.Voici le problème auquel je suis confronté :J'ai un textarea qui contient du code HTML et Problème xmlhttprequest :( [ par GvZ ] Tout d'abord bonjour à tous. Je ne pensais pas faire appel à vous & vous embêter avec une question, les questions déjà posées m'aidaient à chaque foi Problème substr syntaxe javascript [ par deneb92 ] Bonjour, j'ai une question toute bête : je cherche à remplir une cellule avec le bout d'une autre cellule. Dans la première , je sélectionne la ville Problème faux popus [ par TheWav ] Bonjour, J'ai essayé le code suivant: http://www.javascriptfr.com/codes/SYSTEME-FAUSSES-BELLES-POPUP-JS-HTML_15986.aspx et j'ai rencontré un problème Problème insoluble (?) de son [ par rasmulti ] Bonjour, je voudrais jouer un son au survol d'une image. Avec javascript pas de problème. Mais, pour compliquer les choses, cette image est traitée e Supprimer élément javascript [ par tets88 ] Bonjour, Voilà mon problème : j'ai une tableau en HTML et j'aimerai supprimé les éléments à l'intérieur. Voici une partie de mon code : [code=html] Une page html qui contient du code javascript et qui ne fonctionne pas quand elle... [ par cavalier2400 ] Bonsoir, merci pour tous l'aide que j'ai reçu de la part de codes sources, pour améliorer mes apllications,: j'ai une pas page(A).html qui contient du radio bouton fonction js [ par mageek06 ] Bonjour, J'ai un probleme avec mon code js. J'ai tout d'abord des boutons radios faisant appel a une fonction js : [code=html] clients <input typ


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales