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>