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
    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