diff options
Diffstat (limited to 'includes/js/dijit/_base/window.js')
-rw-r--r-- | includes/js/dijit/_base/window.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/includes/js/dijit/_base/window.js b/includes/js/dijit/_base/window.js new file mode 100644 index 0000000..c1bbb54 --- /dev/null +++ b/includes/js/dijit/_base/window.js @@ -0,0 +1,47 @@ +if(!dojo._hasResource["dijit._base.window"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. +dojo._hasResource["dijit._base.window"] = true; +dojo.provide("dijit._base.window"); + +dijit.getDocumentWindow = function(doc){ + // summary + // Get window object associated with document doc + + // With Safari, there is not way to retrieve the window from the document, so we must fix it. + if(dojo.isSafari && !doc._parentWindow){ + /* + This is a Safari specific function that fix the reference to the parent + window from the document object. + TODO: #5711: should the use of document below reference dojo.doc instead + in case they're not the same? + */ + var fix=function(win){ + win.document._parentWindow=win; + for(var i=0; i<win.frames.length; i++){ + fix(win.frames[i]); + } + } + fix(window.top); + } + + //In some IE versions (at least 6.0), document.parentWindow does not return a + //reference to the real window object (maybe a copy), so we must fix it as well + //We use IE specific execScript to attach the real window reference to + //document._parentWindow for later use + //TODO: #5711: should the use of document below reference dojo.doc instead in case they're not the same? + if(dojo.isIE && window !== document.parentWindow && !doc._parentWindow){ + /* + In IE 6, only the variable "window" can be used to connect events (others + may be only copies). + */ + doc.parentWindow.execScript("document._parentWindow = window;", "Javascript"); + //to prevent memory leak, unset it after use + //another possibility is to add an onUnload handler which seems overkill to me (liucougar) + var win = doc._parentWindow; + doc._parentWindow = null; + return win; // Window + } + + return doc._parentWindow || doc.parentWindow || doc.defaultView; // Window +} + +} |