summaryrefslogtreecommitdiff
path: root/lib/dojo/_base/window.js.uncompressed.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dojo/_base/window.js.uncompressed.js')
-rw-r--r--lib/dojo/_base/window.js.uncompressed.js134
1 files changed, 134 insertions, 0 deletions
diff --git a/lib/dojo/_base/window.js.uncompressed.js b/lib/dojo/_base/window.js.uncompressed.js
new file mode 100644
index 000000000..3d23c3a97
--- /dev/null
+++ b/lib/dojo/_base/window.js.uncompressed.js
@@ -0,0 +1,134 @@
+define("dojo/_base/window", ["./kernel", "./lang", "../sniff"], function(dojo, lang, has){
+// module:
+// dojo/_base/window
+
+var ret = {
+ // summary:
+ // API to save/set/restore the global/document scope.
+
+ global: dojo.global,
+ /*=====
+ global: {
+ // summary:
+ // Alias for the current window. 'global' can be modified
+ // for temporary context shifting. See also withGlobal().
+ // description:
+ // Use this rather than referring to 'window' to ensure your code runs
+ // correctly in managed contexts.
+ },
+ =====*/
+
+ doc: this["document"] || null,
+ /*=====
+ doc: {
+ // summary:
+ // Alias for the current document. 'doc' can be modified
+ // for temporary context shifting. See also withDoc().
+ // description:
+ // Use this rather than referring to 'window.document' to ensure your code runs
+ // correctly in managed contexts.
+ // example:
+ // | n.appendChild(dojo.doc.createElement('div'));
+ },
+ =====*/
+
+ body: function(/*Document?*/ doc){
+ // summary:
+ // Return the body element of the specified document or of dojo/_base/window::doc.
+ // example:
+ // | win.body().appendChild(dojo.doc.createElement('div'));
+
+ // Note: document.body is not defined for a strict xhtml document
+ // Would like to memoize this, but dojo.doc can change vi dojo.withDoc().
+ doc = doc || dojo.doc;
+ return doc.body || doc.getElementsByTagName("body")[0]; // Node
+ },
+
+ setContext: function(/*Object*/ globalObject, /*DocumentElement*/ globalDocument){
+ // summary:
+ // changes the behavior of many core Dojo functions that deal with
+ // namespace and DOM lookup, changing them to work in a new global
+ // context (e.g., an iframe). The varibles dojo.global and dojo.doc
+ // are modified as a result of calling this function and the result of
+ // `dojo.body()` likewise differs.
+ dojo.global = ret.global = globalObject;
+ dojo.doc = ret.doc = globalDocument;
+ },
+
+ withGlobal: function( /*Object*/ globalObject,
+ /*Function*/ callback,
+ /*Object?*/ thisObject,
+ /*Array?*/ cbArguments){
+ // summary:
+ // Invoke callback with globalObject as dojo.global and
+ // globalObject.document as dojo.doc.
+ // description:
+ // Invoke callback with globalObject as dojo.global and
+ // globalObject.document as dojo.doc. If provided, globalObject
+ // will be executed in the context of object thisObject
+ // When callback() returns or throws an error, the dojo.global
+ // and dojo.doc will be restored to its previous state.
+
+ var oldGlob = dojo.global;
+ try{
+ dojo.global = ret.global = globalObject;
+ return ret.withDoc.call(null, globalObject.document, callback, thisObject, cbArguments);
+ }finally{
+ dojo.global = ret.global = oldGlob;
+ }
+ },
+
+ withDoc: function( /*DocumentElement*/ documentObject,
+ /*Function*/ callback,
+ /*Object?*/ thisObject,
+ /*Array?*/ cbArguments){
+ // summary:
+ // Invoke callback with documentObject as dojo/_base/window::doc.
+ // description:
+ // Invoke callback with documentObject as dojo/_base/window::doc. If provided,
+ // callback will be executed in the context of object thisObject
+ // When callback() returns or throws an error, the dojo/_base/window::doc will
+ // be restored to its previous state.
+
+ var oldDoc = ret.doc,
+ oldQ = has("quirks"),
+ oldIE = has("ie"), isIE, mode, pwin;
+
+ try{
+ dojo.doc = ret.doc = documentObject;
+ // update dojo.isQuirks and the value of the has feature "quirks".
+ // remove setting dojo.isQuirks and dojo.isIE for 2.0
+ dojo.isQuirks = has.add("quirks", dojo.doc.compatMode == "BackCompat", true, true); // no need to check for QuirksMode which was Opera 7 only
+
+ if(has("ie")){
+ if((pwin = documentObject.parentWindow) && pwin.navigator){
+ // re-run IE detection logic and update dojo.isIE / has("ie")
+ // (the only time parentWindow/navigator wouldn't exist is if we were not
+ // passed an actual legitimate document object)
+ isIE = parseFloat(pwin.navigator.appVersion.split("MSIE ")[1]) || undefined;
+ mode = documentObject.documentMode;
+ if(mode && mode != 5 && Math.floor(isIE) != mode){
+ isIE = mode;
+ }
+ dojo.isIE = has.add("ie", isIE, true, true);
+ }
+ }
+
+ if(thisObject && typeof callback == "string"){
+ callback = thisObject[callback];
+ }
+
+ return callback.apply(thisObject, cbArguments || []);
+ }finally{
+ dojo.doc = ret.doc = oldDoc;
+ dojo.isQuirks = has.add("quirks", oldQ, true, true);
+ dojo.isIE = has.add("ie", oldIE, true, true);
+ }
+ }
+};
+
+ 1 && lang.mixin(dojo, ret);
+
+return ret;
+
+});