> 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