On 08/11/2011 09:57 AM, e-lena-s wrote: > Yup, the js--> js event is kept in tact. I can see all the right data > with the console.log.
OK > I'll try your suggestion for alternative way of handling the event Just to be clear, the event handler from step 0 calls the addLookupResultHandler via GWT's $wnd object. I think you know that, but I missed that point in the previous post. > > On Aug 11, 9:50 am, Jeff Chimene <jchim...@gmail.com> wrote: >> On 08/11/2011 08:38 AM, e-lena-s wrote: >> >>> The issue is that the JS function is written by some other library. >>> The custom event will be fired not by my module but by other code on >>> the page . I however need to listen to that event, and get the >>> customData out of that event for further processing within the >>> module. >>> I have tried to use DOM.sinkBitlessEvent (and seeing if I can catch >>> this event in onBrowserEvent() ), but that didn't work. Not sure what >>> other way I can get that event , or why does the custom event looses >>> its customData when within JSNI method >> >> Interesting problem. >> >> Are you sure the event data is kept for the case of js --> js? >> >> I'd eliminate that possibility first. I'm sure it works, but nothing >> you've said so far positively eliminates that (admittedly small) >> possibility. >> >> If it /is/ kept, then: >> 0) write an event hander in js (i.e. outside gwt) that calls >> addLookupResultHandler >> 1) load the event handler from step 0 as part of your external library's >> load phase >> 2) hook your addLookupResultHandler to GWT's $wnd object before step 3) >> 3) fire the event in the library. That will call the event handler >> written in step 0 >> >> >> >> >> >> >> >> >> >>> On Aug 11, 8:17 am, Jeffrey Chimene <jchim...@gmail.com> wrote: >>>> On 8/10/2011 4:50 PM, e-lena-s wrote: >> >>>>> I am trying to listen to a custom JS event that is created outside my >>>>> GWT module. In my JS file I create the event, and then fire it as >>>>> such : >> >>>>> var evt = document.createEvent("Event"); >>>>> evt.initEvent('customEvent', true, true); >>>>> evt.customData = "someData"; >> >>>>> window.addEventListener('customEvent', function(evt) >>>>> { console.log("test: " + evt.customData)}, false); >>>>> window.dispatchEvent(evt); >> >>>>> Now, in my GWT code, I have a JSNI method that adds a listener to >>>>> listen to my customEvent and act on it. Code as follows: >> >>>>> public native void addLookupResultHandler()/*-{ >>>>> $wnd.addEventListener('lookupEntitySelected', >>>>> $entry(function(evt){ >> >>>>> console.log("gwt: " + evt.customData); >> >>>>> console.log("gwt: " + evt.type); >> >>>>> @myClassName::handleEvent(LmyCustomEventEvent;)(evt) >>>>> }), false); >>>>> }-*/; >> >>>>> The problem I have is that the customData is being dropped when the >>>>> event gets to JSNI code. I can see that the event listner written in >>>>> JS does get the correct event with the correct customData, but logging >>>>> the event properties in JSNI shows that customData is undefined (event >>>>> type looks correct though) >> >>>>> Am I doing something wrong here ? >> >>>>> Is there may be a better way to create custom events (it has to be >>>>> created in JavaScript, since the code firing it won't be in GWT >>>>> module) >> >>>> My earlier answer was not correct. I don't see why >>>> addLookupResultHandler is a JSNI routine. I think you want to write it >>>> in GWT, via handling a NativeEvent. However, I've never tried this, so >>>> it may not work as you intend. >> >>>> OTOH, maybe you should be using the GWT event bus. From an architectural >>>> perspective, I think that's a better choice. Instead of using >>>> window.dispatch(), fire the event via a JSNI method. So, your first JS >>>> sample should become a JSNI routine that calls a Java routine that calls >>>> eventBus.fire(), and your second example should become Java. It's >>>> possible to call eventBus.fire() entirely within JSNI, but getting that >>>> eventBus argument to your JSNI method may be problematic. > -- 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 google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.