Monday, August 7, 2017

Re: visibilitychange event

Generally ok, given it is a global listener and you probably just install it once on app initialization. However you should use $doc instead of document to make sure you listen on the global document. Depending on your browser support you might want a utility method to check if visibility change events are actually supported by the browser.

static native boolean isSupported() /*-{
  return $doc.hidden !== 'undefined' && $doc.visibilityState !== 'undefined';
}-*/
;

In our app we created a PageVisibilityChangedEvent which extends GwtEvent and then fire it on the app wide EventBus so everyone can easily listen for it. To register the DOM handler we used 

Element doc = Document.get().cast();
DOM
.sinkBitlessEvent(doc, VISIBILITY_CHANGE_EVENT);
DOM
.setEventListener(doc, new EventListener() {
 
@Override
 
public void onBrowserEvent(final Event event) {
   
if (VISIBILITY_CHANGE_EVENT.equals(event.getType())) {
     firePageVisibilityChangedEvent
();
   
}
 
}
});

You could of course also use elemental2 (requires newest GWT) or JsInterop to reduce the amount of JSNI if that is important for you.

-- J.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment