1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- define("dijit/Viewport", [
- "dojo/Evented",
- "dojo/on",
- "dojo/ready",
- "dojo/sniff",
- "dojo/_base/window", // global
- "dojo/window" // getBox()
- ], function(Evented, on, ready, has, win, winUtils){
- // module:
- // dijit/Viewport
- /*=====
- return {
- // summary:
- // Utility singleton to watch for viewport resizes, avoiding duplicate notifications
- // which can lead to infinite loops.
- // description:
- // Usage: Viewport.on("resize", myCallback).
- //
- // myCallback() is called without arguments in case it's _WidgetBase.resize(),
- // which would interpret the argument as the size to make the widget.
- };
- =====*/
- var Viewport = new Evented();
- ready(200, function(){
- var oldBox = winUtils.getBox();
- Viewport._rlh = on(win.global, "resize", function(){
- var newBox = winUtils.getBox();
- if(oldBox.h == newBox.h && oldBox.w == newBox.w){ return; }
- oldBox = newBox;
- Viewport.emit("resize");
- });
- // Also catch zoom changes on IE8, since they don't naturally generate resize events
- if(has("ie") == 8){
- var deviceXDPI = screen.deviceXDPI;
- setInterval(function(){
- if(screen.deviceXDPI != deviceXDPI){
- deviceXDPI = screen.deviceXDPI;
- Viewport.emit("resize");
- }
- }, 500);
- }
- });
- return Viewport;
- });
|