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

> 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]>
>>> Date: Fri, May 8, 2009 at 4:54 PM
>>> Subject: Re: MyFaces 2.0 PartialResponseWriter + EVALs
>>> To: [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]
Webprofil: http://www.j4fry.org/alexanderbell.shtml

Reply via email to