>> HtmlContainer.load([JQUERY_SCRIPT], init);
>
> As a
 side note, this can be also used in FlexJS application (swf / swc), not
 only externs JS based applications, the callback will be called
immediately, that's it.

To make things even clearer, especially because I use conditional compilation 
with 2 build configurations, I can build my library in a once with IntelliJ.

https://paste.apache.org/kOwX

My AS Build Configuration:
-define+=CONFIG::AS,true
-define+=CONFIG::JS,false
-include-file=js/out/HtmlContainer.js,out\production\HtmlContainer\js\out\HtmlContainer.js

My JS Build Configuration:
-define+=CONFIG::AS,false
-define+=CONFIG::JS,true
-js-output-type=FLEXJS

Frédéric THOMAS

----------------------------------------
> From: webdoubl...@hotmail.com
> To: dev@flex.apache.org
> Subject: RE: [FalconJX FlexJS] JQuery up and running, a nightmare but we now 
> have 1.9 in AS
> Date: Tue, 23 Jun 2015 19:55:05 +0100
>
>> HtmlContainer.load([JQUERY_SCRIPT], init);
>
> As a side note, this can be also used in FlexJS application (swf / swc), not 
> only externs JS based applications, the callback will be called immediately, 
> that's it.
>
> The function as it is today is simple but could be implemented to send events 
> instead of using a callback, parallel downloads, css, etc...
>
> It is not as perfect as adding a MetaTag in AS (emitted only in JS) to do the 
> same job (or event better, what I was thinking, to emit directly the Script 
> tag comment in the generated JS file) but it works.
>
> Frédéric THOMAS
>
>
> ----------------------------------------
>> From: webdoubl...@hotmail.com
>> To: dev@flex.apache.org
>> Subject: RE: [FalconJX FlexJS] JQuery up and running, a nightmare but we now 
>> have 1.9 in AS
>> Date: Tue, 23 Jun 2015 19:27:55 +0100
>>
>>> It just occurred to me that you can’t use this sort of mechanism because
>>> none of the JS or AS actually gets baked into the final JS so there will
>>> never be an <inject_html> tag found by the scan.
>>
>> I know that, that's why I'm proposing other mechanisms.
>>
>> I just created a HtmlContainer.swc with the simple extern JS based function 
>> I shown before to load multiple scripts, adding this lib in my project, I 
>> can now use it to import the jQuery JS library or any other from inside the 
>> AS code, rebuild, and it will work from the generated index.html, like that:
>>
>> private static const JQUERY_SCRIPT:String = 
>> 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js';
>>
>> public function start():void {
>> HtmlContainer.load([JQUERY_SCRIPT], init);
>> }
>>
>> private function init():void {
>> const button:Element = document.createElement("button");
>> button.onclick = function ():void {
>> alert("Hello browser from FalconJX!");
>> };
>> button.textContent = "Say Hello";
>> document.body.appendChild(button);
>>
>> var div:HTMLDivElement = document.createElement("DIV") as HTMLDivElement;
>>
>> $(document.body).append(div).ready(function():void {
>> $(div).html("This is Hello World by JQuery");
>> $(div).css("border", "2px solid green");
>> $(div).insertBefore(button);
>> });
>> }
>>
>> Frédéric THOMAS
>>
>>
>> ----------------------------------------
>>> From: aha...@adobe.com
>>> To: dev@flex.apache.org
>>> Subject: Re: [FalconJX FlexJS] JQuery up and running, a nightmare but we 
>>> now have 1.9 in AS
>>> Date: Tue, 23 Jun 2015 17:06:32 +0000
>>>
>>>
>>>
>>> On 6/23/15, 8:53 AM, "Frédéric THOMAS" <webdoubl...@hotmail.com> wrote:
>>>>
>>>>Playing with the externs, we've seen that in order to customize our
>>>>index.html (adding a Script tag for JQuery for example) we had to create
>>>>another index.html outside the build folder referencing our main .js
>>>>because the original one was overridden each time we built, so, instead
>>>>of doing that, I was looking for a way to write our Script tag from AS
>>>>which is not possible at the moment and we haven't got a template index
>>>>to use neither.
>>>>
>>>>ok, IIUC, the goal of having externs is to ease the implementation of
>>>>as/js components giving the possibility to implement them in AS and use
>>>>the generated JS as JS source of the new FlexJS component, so, we can, in
>>>>the generated JS, add a comment to load a JS Script or CS.
>>>>
>>>>But still, if I look at the jQuerySample.mxml, I can see something that
>>>>should be done at each build, not every user friendly:
>>>>
>>>>
>>>>So, my goal was to simplify link and script tags either making them
>>>>accessible from the AS via a MataTag for example or having an utility
>>>>class to download dynamically those resources and add them to the head of
>>>>the html application container.
>>>>
>>>>Am I clearer ? Did I miss something ? Is that a bad direction ?
>>>
>>> Yeah, I think I get it. Actually, that comment in JQuerySample.mxml is
>>> obsolete. The org.apache.flex.jquery.Application.js has <inject_html>
>>> tags in a comment in that file, and GoogDepsWriter.java and
>>> MXMLFlexJSPublisher.java find it and add it to the index.html. That is
>>> how FlexJS handles bootstrapping JS frameworks.
>>>
>>> It just occurred to me that you can’t use this sort of mechanism because
>>> none of the JS or AS actually gets baked into the final JS so there will
>>> never be an <inject_html> tag found by the scan.
>>>
>>> The reason it works for FlexJS is because some non-extern class like
>>> Application has to be used in the app. If you create your own Jquery
>>> Application that folks must subclass in their apps then you can use the
>>> same mechanism. Otherwise, you probably need to invent a new mechanism.
>>>
>>> One idea I considered was this: Right now in any SDK there is a
>>> flex-config.xml and an air-config.xml and often an airmobile-config.xml.
>>> These configs specify a set of libraries and other settings. We could
>>> create a js-config.xml and jquery-config.xml and figure out a way to tell
>>> the compiler in the -config.xml what to inject into the .html. Then in FB
>>> and elsewhere, you can switch by adding +configname=js or
>>> +configname=jquery just like we do +configname=air
>>>
>>> I’m sure there are other ways as well.
>>>
>>> Thoughts?
>>> -Alex
>>>
>>>
>>
>
                                          

Reply via email to