It does work (even cross-browser). Try this:

*<html>
<body>
<input type="submit" value="test" id="test">
<script>//<!--
   var scriptTag = document.createElement("script");
   scriptTag.src="test.js";
   var item = document.getElementById('test');
   item.parentNode.insertBefore(scriptTag, item);
   //-->
</script>
</body>
</html>

with test.js having one line:
alert('test');

It's the DOM action that triggers the script execution.

Best regards,
Ganesh
*
Alexander Bell schrieb:
Hi,

I don't understand the solution for [3].
I've got for instance the following tag on my page: <script type="text/javascript" src="http://my.source.com/myscript.js"; />. So we have to execute all the script code inside that file. Does this work with document.createElement("script")? Because this only create a DOM element but I'm not sure that the script-code is executed (especially in IE 5-6).

regards alex

2009/5/8 Ganesh <[email protected] <mailto:[email protected]>>

    Hi,

    There are four kinds of script constructs I can image may becoming
    pulled in through an ajax request:

    [1] component does startElement("script", component) ...
    endElement("script")
    [2] XHTML markup contains <script type="text/javascript"> ...
    </script> (or component writes this directly to the stream)
    [3] markup contains <h:outputSrcipt>
    [4] markup contains <script src=...>

    IMHO only [1] qualifies to be included in the <eval> section of
    the AJAX response by the PartialResponseWriter. Execution on the
    Javascript side can happen with
    window.execScript(theActualScriptContent) like Matthias proposed.
    Matthias, can you explain the advantages of this?

    [2] should be recognized by our embedded Javascript runScripts
    function which in fact also does window.execScript. Werner, I
    think we agree on this. Everything else would cause parsing of the
    XHTML markup.

    For [3] Werners document.createElement("script") approach can be
    suitable though I'm not sure how you want to send this down to the
    browser. Are you planning to run on the <extension> tag in the
    ajax XMLSchema?

    Werner, your example for document.createElement("script") was
    based on case [4]. But how do you want to do this? Are you
    planning to parse all the markup for script tags with src
    attributes? Maybe here an extension to our embedded Javascript
    runScripts function could make sense? This could also solve [3]!

    Best regards,
    Ganesh

    Werner Punz schrieb:

        Yes but then I have to fetch the script via xhr...
        which means more code on the javascript side of things!



        Werner



        Matthias Wessendorf schrieb:

            isn't it better to do this in IE:
            window.execScript(theActualScriptContent);

            and in FF and other this:
            window.eval(theActualScriptContent);

            -Matthias

            ---------- Forwarded message ----------
            From: Werner Punz <[email protected]
            <mailto:[email protected]>>
            Date: Fri, May 8, 2009 at 4:54 PM
            Subject: Re: MyFaces 2.0 PartialResponseWriter + EVALs
            To: [email protected] <mailto:[email protected]>


            Werner Punz schrieb:

                Hello everyone:

                I checked what has been done on the Partial Response
                Writer for the Rendering. It is very basic, so I would
                propose following enhancement.

                Since we need separate eval blocks for javascripts, we
                implement a PartialResponseWriterImpl which fetches
                the scripts
                from components and later allows those scripts to be
                pushed into the eval part of the partial response.

                There is a reason for that.

                Although we have embedded javascript parsing in our
                javascripts I would see that as optional feature for
                badly behaving component sets.

                The normal way for a component writer still is:
                a) startElement("tagName", component)
                b) writeAttribute...

                write

                c) endElement

                The way Trinidad and others did it was simply to check
                for scripts at startElement and push them into a
                separate eval datastructure later to be processed (in
                our case after the update part of the p
                PartialResponse a separate eval stage has to be added)

                I would start to work on this issue if it is ok with
                anyone...
                The entire functionality should be put into our
                PartialResponseWriterImpl not into the API, and will
                be hooked into

                processPartial of PartialViewContextImpl

                I am not sure how to deal with script src="..." on the
                protocol and javascript level.

                Werner




            Ok here is my idea regarding sript src="....

            I would transform that on the server side to a small
            javascript ala
            var scriptTag = document.createElement("script");
            scriptTag.src="<src>"; document.body.append(scriptTag);
            since the eval is executed after the rendering is done,
            this should be
            even safe on IE6!

            That also would still mean that the update CDATA block is just
            javascript only without any preprocessing which then can
            be pushed
            straight into the eval function!


            Werner








--
Mit freundlichen Grüßen / Kind regards
Alexander Bell

J4Fry OpenSource Community
Internet: http://www.j4fry.org
E-Mail: [email protected] <mailto:[email protected]>
Webprofil: http://www.j4fry.org/alexanderbell.shtml

Reply via email to