Re: Activation of a javascript incorporated after initial loading of the page

Doron Rosenberg <[email protected]>
Newsgroups gmane.comp.mozilla.devel.xml
Organization Another Netscape Collabra Server User
Message-ID <[email protected]>
Have you tried absolute urls to the .js file?


Alexandre Damiron wrote:
> Hi, I send an intial js loader to the browser, namely htmlOutput
> 
> function htmlOutput(xmlUri, xslUri){
>     
>     var xmlHttp = XmlHttp.create(); //XmlHttp is a cross-browser 
> httpRequest Class. We load the xml file
>        var async = true;
>        xmlHttp.open("GET", xmlUri, async);
>        xmlHttp.onreadystatechange = function () {
>            if (xmlHttp.readyState == 4){ //Once loaded, the xsl 
> stylesheet is loaded too, then imported into the xslt processor
>                // TODO error control
>                   var processor = new XSLTProcessor();
>             var xslHttp = XmlHttp.create();
>                var xslasync = true;
>                xslHttp.open("GET", xslUri, xslasync);
>                xslHttp.onreadystatechange = function () {
>                 if (xslHttp.readyState == 4){
>                            processor.importStylesheet(xslHttp.responseXML);
>                       var newDocument = 
> processor.transformToDocument(xmlHttp.responseXML); //xslt produce a DomDoc
>                     var bodyChildren = new Array();
>                     bodyChildren = 
> newDocument.getElementsByTagName("body")[0].childNodes;
>                     for (var i = 0; i < bodyChildren.length; i++) { 
> //each part of the body is imported into the displayed doc, namely document
>                      
> document.getElementsByTagName("body")[0].appendChild(document.importNode(bodyChildren[i], 
> true));
>                     }
>                     var bodyChildren = new Array();
>                     headChildren = 
> newDocument.getElementsByTagName("head")[0].childNodes;
>                     for (var i = 0; i < headChildren.length; i++) { 
> //same for each part of the head is imported into the displayed doc, 
> namely document
>                      
> document.getElementsByTagName("head")[0].appendChild(document.importNode(headChildren[i], 
> true));
>                     }
>                 }
>             }
>             xslHttp.send(null);
>         }
>     }
>     xmlHttp.send(null);
> 
> }
> 
> This is very classical. Xml is loaded, then Xsl, XsltProcessor is 
> instanciated, filled with the stylesheet, the transformation is made. 
> Finally, I import into the displayed document every node which interest 
> me, in the body then in the head section. In that case, every node of 
> the XHTML output produced. It works. I am happy, because everything is 
> loaded just once, and my xmlHttp.responseXML is ready to be worked on, 
> while the nodes are displayed and present in the DOM inspector.
> But There is a problem: The script node I add via xslt does not seem to 
> be evaluated. Its functions are not taken into consideration. Any ideas ?
> 
> The xsl: add_user_input() is in add.js. But clicking the button throw 
> that there is no such function. An alert('test') in that js does not 
> work either.
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
> xmlns:xhtml="http://www.w3.org/1999/xhtml">
>     <xsl:template match="/">
>         <html>
>                 <head>
>                     <title>Gestion des droits trac: Interface</title>
>                     <link type="image/x-icon" href="/favicon.ico" 
> rel="shortcut icon"></link>
>                     <link href="URI/dev.css" type="text/css" 
> rel="stylesheet"></link>
>                     <meta content="text/html; charset=ISO-8859-1" 
> http-equiv="Content-Type"></meta>
>                     <meta content ="" name="keywords"></meta>
>                     <meta content ="" name="description"></meta>
>                     <meta http-equiv = "content-language" content = 
> "fr-FR, en-US"></meta>
>                     <meta http-equiv = "cache-control" content = 
> "no-cache"></meta>
>                     <meta name = "author" content = "Alexandre 
> Damiron"></meta>
>                     <script type='text/javascript'  
> src='URI/javascripts/add.js'>
>                     </script>
>                 </head>
>                 <body>
> 
>                     <table>
>                         <xsl:for-each select="/Repositories/Repository">
>                             <tr>
>                                 <td>
>                                     <div><xsl:value-of 
> select="Path"/></div><input type="button" value="Ajouter un utilisateur" 
> onclick="javascript:add_user_input()" />
>                                     <br/>
>                                     <table>
>                                         <xsl:for-each select="Users/User">
>                                             <tr>
>                                                 <td>
>                                                     <i><xsl:value-of 
> select="."/></i>
>                                                 </td>
>                                             </tr>
>                                         </xsl:for-each>
>                                     </table>
>                                 </td>
>                             </tr>
>                         </xsl:for-each>
>                     </table>
> 
>                 </body>
>             </html>
> 
>     </xsl:template>
> 
> </xsl:stylesheet>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.