Shawn -

Thanks for the excellent explanation!

After a few tries at coding it using some JSNI, I decided it felt too
ugly.
And, sure enough, after some more experimentation, I arrived at
a working ClickListener for an anchor that did NOT need any JSNI
at all.

Happiness is a first-time deployment of the GWT flavor containing most
of the functionality of the original maps/javascript based app.

Cheers...

Dave

On Dec 4, 2:19 am, Shawn Pearce <[EMAIL PROTECTED]> wrote:
> On Wed, Dec 3, 2008 at 18:08, David H. Cook <[EMAIL PROTECTED]>wrote:
>
>
>
> > I'm coding my first GWT app, and trying to get my head around
> > creating an anchor that calls native javascript.  It now occurs to me
> > that even tho the goal is to write in java, there will still be some
> > things that can only be done cleanly by utilizing some native
> > javascript.  (Agreed?)
>
> For native JavaScript invocations, try to use Java method declarations, but
> mark the method as "native" and use GWT's JSNI feature to inline the
> JavaScript code.  It makes it far easier to pass values into JavaScript from
> Java, and to return values from JavaScript back into Java.  If you need to
> hold onto a plain JavaScript object or function, use the JavaScriptObject
> type in Java.  There's plenty more details in the GWT docs under "JavaScript
> Integration" or some such section.
>
> Given that, can someone point me to some sample GWT code
>
> > using such anchors?
>
> If you really really want to use a javascript: sort of URL, I think you can
> use an Anchor widget:
>
>   add(new Anchor("click here", false, "javascript:mycode();"));
>
> This generates the same as:
>
>   <a href="javascript:mycode();">click here</a>
>
> Another option is to use an Anchor with a ClickListener and JSNI:
>
>   Anchor a = new Anchor("click here", false);
>   a.addClickListener(new ClickListener() {
>     public void onClick(Widget w) {
>         callMyCode();
>     }
>   });
>   add(a);
>
>   private static native void callMyCode()/*-{ mycode(); }-*/;
>
>  And, can someone explain when to use
>
> > the anchor constructor with the 2nd boolean arg 'asHTML' set
> > true and when to set it false?
>
> Marking it true (asHTML) means the text passed is set as the innerHTML,
> rather than as the innerText of the anchor element.  E.g.:
>
>   add(new Anchor("<blink>click here", false, "javascript:mycode();"));
>
> yields:
>
>   <a href="javascript:mycode();">&lt;blink&gt;click here</a>
>
> but this produces the dreaded "blink the entire page" effect:
>
>   add(new Anchor("<blink>click here", true, "javascript:mycode();"));
>
> yields:
>
>   <a href="javascript:mycode();"><blink>click here</a>
>
> asHTML = true is generally a bad idea, unless you know exactly where that
> input came from.  It can be useful if your code is producing the HTML, or
> you read it from a known resource, but generally I have found you want
> asHTML = false because you want to avoid HTML injection attacks.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to Google-Web-Toolkit@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to