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 :

[AJAX] Executer du javascript apres transfo XSL


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 196
    Par défaut [AJAX] Executer du javascript apres transfo XSL
    Je craque ....

    Bonjour,

    Le monde de l'XSL est nouveau pour moi et a chaque recherche sur moteur de recherche justement je croule sous des tonnes d'informations ...

    Je voudrais savoir si il est possible facilement d'executé du code javascript au sein meme de XSL.

    Je vous raconte mon histoire : Je crais un XSL qui va creer un HTML qui lui meme va etre appelé par un autre HTML, cette appel est en fait une simple recopie du contenu de la page HTML generé par le XSL

    Le problème est que ma page générée dois éxécuté un bout de code javascript afin d'afficher une image dans les bonne dimension ... ce code nétant plus executer je n'ai plus l'image dans la page appelante.

    Du coup si j'execute le code javascript dans l'XSL, que l'XSL gemere ma page HTML avec l'appel de l'image avec les bonne dimension bah c'est gagné

    J'ai lu qu'il etait possible de la faire mais avec de l'XSLT non conforme ou "un truc dans le genre", sans vouloire choquer les puristes.

    Je vous appel a l'aide au moins pour me diriger un peu

    Merci a vous...

    C. Clercq

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Au vu de ton explication, je ne pense pas que tu sois dans le cas de devoir executer du javascript dans ton xslt, de toute façon, si tu as acces au javascript tu n'as pas acces au dom HTML.

    Ce sont des transformation coté client ou chargé avec AJAX non ?

    C'est du code en dehors d'une fonction qui ne s'execute pas ou sur un onload ?

  3. #3
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967

  4. #4
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 196
    Par défaut
    En fait le code s'execute parfaitement si je lance la page généré par le XSL. Quand je lance la page elle interprete le <script>appel de ma fonction(param)<script>.
    Mais Quand j'ouvre la page qui appel cette derniere et que je lis le code generé grace au module web developper de firefox, je m'aperçois que l'appel a la fonction javascript n"est pas fait.

    Je sais pas si je m'exprime bien, mais si j'essai de resumé la situation cela serait : a l'execution de A, une partie de B est copié dans A. Mais l'execution du javascript de B nést pas fait.

    Du coup je pense que si au lieu d'appeler mon javascript dans mon html qui va me renvoyer <img src=..... height=... width=....>, si j'execute celui si dans mon XSL, B aura <img ... au lieu de l'appel, donc a la recopie dans A pu besoin d'apeler le script, donc bonheur (presumé )

    Encore merci.

    C. Clercq

  5. #5
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 196
    Par défaut
    Merci pour le lien, je vais essayer de comprendre quelque chose, mon plus gros probleme je crois, c'est que je ne connait rien a ces technologie et que je dois me plonger ds du code proprietaire ....

    AJAX XMLT .... je suis noyé ...

  6. #6
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 196
    Par défaut
    Erwy,

    mon probleme á l'air de rejoindre t'as reponse :

    Citation Envoyé par Erwy
    soit objPere l'element dont la balise script que tu veux "valider" est le père (a toi de l'obtenir par getElementById ou autre)
    A effectuer juste apres avoir inclus le code obtenu de ton xmlhttprequest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    eval(objPere.getElementsByTagName("script")(0).innerHTML)
    Mais je comprend pas ou je met ce bout de code , ni ou je me sert de getElementById

    J'ai un js dont le nom est nav.js, dans lequel il y'a entre autre le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if(req)
    {
     req.open('GET', url, false);
     req.send(null);
     content.innerHTML = req.responseText;
    }
    else
    {
     content.innerHTML = 'sorry ... (la il pqrle de XMLHTTPrequest)
    }
    je dois mettre le bout de code apres ça ? Sachant que content est initialisé a document.getElementById('content');

    Encore et toujours merci

    C. Clercq

  7. #7
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Citation Envoyé par Clercq

    je dois mettre le bout de code apres ça ? Sachant que content est initialisé a document.getElementById('content');
    Pour ce que je peux comprendre dans ton code oui.

    Pour recuperer le bon code javascript à evaluer, il va falloir que tu localise la bonne balise script hors, comme tu ne peux pas lui donner d'id, il va falloir que tu l'insére (dans ton code produit) dans un élément que tu peux identifier (un span par exemple, ou une div qui n'apparaitront pas à l'ecran car vide)pour le retrouver c'est ca le objPere

  8. #8
    Membre éprouvé
    Inscrit en
    Mai 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 196
    Par défaut
    je recapitule tout en "image"

    Ma page appelé c'est :
    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
     
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xp="http://www.giuntilabs.com/exact/xp_v1d0">
    <head>
    <script language="javascript" src="./resizeIMG.js">
    				/*Here is javascript*/
    			</script>
    </head>
    <body>
    <p>Text</p>
    <script language="javascript">redimImage('../../../electronic.JPG', 400, 300)</script>
    <object type="application/x-shockwave-flash" style="position:absolute; left:300; top:600;" height="100%" width="100%">
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="movie" value="../../../tp6timingh0203.swf" />
    <param name="quality" value="high" />
    </object>
    </body>
    </html>
    Ma page appelante c'est :
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xp="http://www.giuntilabs.com/exact/xp_v1d0">
    <head>
    <title>Service</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="navigation.css" />
    <script type="text/javascript">
    			var page_number = 0;
    			var section_number = 0;
    			var previous_section = 0;
    			
    			
    					var page_number_total = 1;
    					var pages = new Array();
    					var i = -1;
    
    					
    							i++;
    							pages[i] = new Array();
    						
    						pages[i][0] = new Array();
    						pages[i][0].name = "introduction";
    						pages[i][0].id = "3006";
    						pages[i][0].title = "Title";				
    						pages[i][0].child = "";
    					</script>
    <script type="text/javascript" src="nav.js" />
    <script type="text/javascript" src="t_scorm.js" />
    <script type="text/javascript" src="track.js" />
    <script type="text/javascript" src="APIWrapper.js" />
    <script type="text/javascript">
    					var track = "scorm";
    				</script>
    </head>
    <body onload="changeContent();">
    <div id="wrapper">
    <div id="menubar">
    <div id="navigation">
    <div id="linearnav">
    <input type="button" name="previous" id="previous" value="&lt;" title="Previous Page" onclick="previousPage();" disabled="disabled" /><input type="button" name="next" id="next" value="&gt;" title="Next Page" onclick="nextPage();" />
    </div>
    <div id="menu">
    <ul>
    <li id="menu_introduction" onmouseover="fixIEHoverScrewUp(this, 'mouseover', 'introduction');" onmouseout="fixIEHoverScrewUp(this, 'mouseout', 'introduction');" class="first last">
    <span><a href="" onclick="changeContentByString('introduction'); return false;">Introduction</a></span>
    </li>
    </ul>
    </div>
    </div>
    <div id="header">
    <h1 id="title">Introduction</h1><span id="page_count">Â </span>
    </div>
    </div>
    <div id="content" accesskey="2">
    <p>
    							Loading...
    						</p>
    </div>
    </div>
    </body>
    </html>
    et la parti du javascript (nav.js) appelé est :
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    function changeContent() {
    	var req = false;
    	var content = document.getElementById('content');
    	var pageTitle = document.getElementById('title');
    	var pageCount = document.getElementById('page_count');
    	var obj1 = document.getElementById('menu_' + pages[section_number][0].name);
    	var obj2 = document.getElementById('menu_' + pages[previous_section][0].name);
     
    	var url = pages[section_number][page_number].name + '_' + pages[section_number][page_number].id + '.html';	
    	pageTitle.innerHTML = pages[section_number][page_number].title;
    	pageCount.innerHTML = countPages();
     
     
    	//	changeActiveMenuItem();
     
      // For Safari, Firefox, and other non-MS browsers
      if (window.XMLHttpRequest) {
        try {
          req = new XMLHttpRequest();
        }
    		catch (e) {
          req = false;
        }
      }
    	else if (window.ActiveXObject) {
        // For Internet Explorer on Windows
    		obj2.style.background = 'url("../common/left_white.gif") top left no-repeat';
    		obj2.childNodes[0].style.background = 'url("../common/right_white.gif") top right no-repeat';
    		obj2.childNodes[0].childNodes[0].style.backgroundColor = '#FFFFFF';
     
    		obj1.style.background = 'url("../common/left_orange.gif") top left no-repeat';
    		obj1.childNodes[0].style.background = 'url("../common/right_orange.gif") top right no-repeat';
    		obj1.childNodes[0].childNodes[0].style.backgroundColor = '#FF5B02';
     
        try {
          req = new ActiveXObject('Msxml2.XMLHTTP');
        }
    		catch (e) {
          try {
            req = new ActiveXObject('Microsoft.XMLHTTP');
          }
    			catch (e) {
            req = false;
          }
        }
      }
     
      if (req) {
        // Synchronous request, wait till we have it all
        req.open('GET', url, false);
        req.send(null);
        content.innerHTML = req.responseText;
      }
    	else {
    		content.innerHTML =
    		'Sorry, your browser does not support ' +
    		'XMLHTTPRequest objects. This page requires ' +
    		'Internet Explorer 5 or better for Windows, ' +
    		'or Firefox for any system, or Safari. Other ' +
    		'compatible browsers may also exist.';
      }
     
    	if ((section_number == pages.length - 1) && (page_number == pages[section_number].length - 1)) {
    		disableButton('next', true);
    	}
    	else {
    		disableButton('next', false);
    	}
     
    	if ((section_number == 0) && (page_number == 0)) {
    		disableButton('previous', true);
    	}
    	else {
    		disableButton('previous', false);
    	}
     
    }
    le script a retrouver est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script language="javascript">redimImage('../../../electronic.JPG', 400, 300)</script>
    Donc si je comprends bien je l'encadre de <div></div> en donnant un id a <div>'lequel me permettra de retrouver mon <script>.

    dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('...')
    '...' corresponds a id='...' ?
    document est le document courant ? si oui est ce possible d'obtenir le nom de la page contenant mon script ?
    Enfin, est ce apres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onload="changeContent();
    que je dois mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(objPere.getElementsByTagName("script")(0).innerHTML)
    ou a la suite du javascript ?

    J'espere ne pas etre trop lourd, mais je sens que la solution est proche ... je vous demande du sang froid

    Merci encore et encore

    C. Clercq

Discussions similaires

  1. [AJAX] executer une fonction javascript apres une reponse AJAX
    Par katie.gillot dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/10/2008, 17h39
  2. Réponses: 4
    Dernier message: 07/11/2007, 08h53
  3. [AJAX] Execution d'un src de javascript
    Par shadowbob dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/12/2006, 18h59
  4. Réponses: 3
    Dernier message: 17/08/2006, 14h43
  5. [Ajax] Execution d'un script javascript dans le fichier xml
    Par tonioz dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/06/2006, 08h00

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