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; });