📄 dojo.js.uncompressed.js
字号:
getModulePrefix: function(/*String*/module){ // summary: gets the prefix associated with module if(this.moduleHasPrefix(module)){ return this.modulePrefixes_[module].value; // String } return module; // String }, getTextStack: [], loadUriStack: [], loadedUris: [], //WARNING: This variable is referenced by packages outside of bootstrap: FloatingPane.js and undo/browser.js post_load_: false, //Egad! Lots of test files push on this directly instead of using dojo.addOnLoad. modulesLoadedListeners: [], unloadListeners: [], loadNotifying: false }; //Add all of these properties to dojo.hostenv for(var param in _addHostEnv){ dojo.hostenv[param] = _addHostEnv[param]; }})();dojo.hostenv.loadPath = function(/*String*/relpath, /*String?*/module, /*Function?*/cb){// summary:// Load a Javascript module given a relative path//// description:// Loads and interprets the script located at relpath, which is relative to the// script root directory. If the script is found but its interpretation causes// a runtime exception, that exception is not caught by us, so the caller will// see it. We return a true value if and only if the script is found.//// For now, we do not have an implementation of a true search path. We// consider only the single base script uri, as returned by getBaseScriptUri().//// relpath: A relative path to a script (no leading '/', and typically// ending in '.js').// module: A module whose existance to check for after loading a path.// Can be used to determine success or failure of the load.// cb: a callback function to pass the result of evaluating the script var uri; if(relpath.charAt(0) == '/' || relpath.match(/^\w+:/)){ // dojo.raise("relpath '" + relpath + "'; must be relative"); uri = relpath; }else{ uri = this.getBaseScriptUri() + relpath; } if(djConfig.cacheBust && dojo.render.html.capable){ uri += "?" + String(djConfig.cacheBust).replace(/\W+/g,""); } try{ return !module ? this.loadUri(uri, cb) : this.loadUriAndCheck(uri, module, cb); // Boolean }catch(e){ dojo.debug(e); return false; // Boolean }}dojo.hostenv.loadUri = function(/*String (URL)*/uri, /*Function?*/cb){// summary:// Loads JavaScript from a URI//// description:// Reads the contents of the URI, and evaluates the contents. This is used to load modules as well// as resource bundles. Returns true if it succeeded. Returns false if the URI reading failed.// Throws if the evaluation throws.//// uri: a uri which points at the script to be loaded// cb: a callback function to process the result of evaluating the script as an expression, typically// used by the resource bundle loader to load JSON-style resources if(this.loadedUris[uri]){ return true; // Boolean } var contents = this.getText(uri, null, true); if(!contents){ return false; } // Boolean this.loadedUris[uri] = true; if(cb){ contents = '('+contents+')'; } var value = dj_eval(contents); if(cb){ cb(value); } return true; // Boolean}// FIXME: probably need to add logging to this methoddojo.hostenv.loadUriAndCheck = function(/*String (URL)*/uri, /*String*/moduleName, /*Function?*/cb){ // summary: calls loadUri then findModule and returns true if both succeed var ok = true; try{ ok = this.loadUri(uri, cb); }catch(e){ dojo.debug("failed loading ", uri, " with error: ", e); } return Boolean(ok && this.findModule(moduleName, false)); // Boolean}dojo.loaded = function(){ }dojo.unloaded = function(){ }dojo.hostenv.loaded = function(){ this.loadNotifying = true; this.post_load_ = true; var mll = this.modulesLoadedListeners; for(var x=0; x<mll.length; x++){ mll[x](); } //Clear listeners so new ones can be added //For other xdomain package loads after the initial load. this.modulesLoadedListeners = []; this.loadNotifying = false; dojo.loaded();}dojo.hostenv.unloaded = function(){ var mll = this.unloadListeners; while(mll.length){ (mll.pop())(); } dojo.unloaded();}dojo.addOnLoad = function(/*Object?*/obj, /*String|Function*/functionName) {// summary:// Registers a function to be triggered after the DOM has finished loading // and widgets declared in markup have been instantiated. Images and CSS files// may or may not have finished downloading when the specified function is called.// (Note that widgets' CSS and HTML code is guaranteed to be downloaded before said// widgets are instantiated.)//// usage:// dojo.addOnLoad(functionPointer)// dojo.addOnLoad(object, "functionName") var dh = dojo.hostenv; if(arguments.length == 1) { dh.modulesLoadedListeners.push(obj); } else if(arguments.length > 1) { dh.modulesLoadedListeners.push(function() { obj[functionName](); }); } //Added for xdomain loading. dojo.addOnLoad is used to //indicate callbacks after doing some dojo.require() statements. //In the xdomain case, if all the requires are loaded (after initial //page load), then immediately call any listeners. if(dh.post_load_ && dh.inFlightCount == 0 && !dh.loadNotifying){ dh.callLoaded(); }}dojo.addOnUnload = function(/*Object?*/obj, /*String|Function?*/functionName){// summary: registers a function to be triggered when the page unloads//// usage:// dojo.addOnLoad(functionPointer)// dojo.addOnLoad(object, "functionName") var dh = dojo.hostenv; if(arguments.length == 1){ dh.unloadListeners.push(obj); } else if(arguments.length > 1) { dh.unloadListeners.push(function() { obj[functionName](); }); }}dojo.hostenv.modulesLoaded = function(){ if(this.post_load_){ return; } if(this.loadUriStack.length==0 && this.getTextStack.length==0){ if(this.inFlightCount > 0){ dojo.debug("files still in flight!"); return; } dojo.hostenv.callLoaded(); }}dojo.hostenv.callLoaded = function(){ if(typeof setTimeout == "object"){ setTimeout("dojo.hostenv.loaded();", 0); }else{ dojo.hostenv.loaded(); }}dojo.hostenv.getModuleSymbols = function(/*String*/modulename){// summary:// Converts a module name in dotted JS notation to an array representing the path in the source tree var syms = modulename.split("."); for(var i = syms.length; i>0; i--){ var parentModule = syms.slice(0, i).join("."); if((i==1) && !this.moduleHasPrefix(parentModule)){ // Support default module directory (sibling of dojo) for top-level modules syms[0] = "../" + syms[0]; }else{ var parentModulePath = this.getModulePrefix(parentModule); if(parentModulePath != parentModule){ syms.splice(0, i, parentModulePath); break; } } } return syms; // Array}dojo.hostenv._global_omit_module_check = false;dojo.hostenv.loadModule = function(/*String*/moduleName, /*Boolean?*/exactOnly, /*Boolean?*/omitModuleCheck){// summary:// loads a Javascript module from the appropriate URI//// description:// loadModule("A.B") first checks to see if symbol A.B is defined. // If it is, it is simply returned (nothing to do).// // If it is not defined, it will look for "A/B.js" in the script root directory,// followed by "A.js".// // It throws if it cannot find a file to load, or if the symbol A.B is not// defined after loading.// // It returns the object A.B.// // This does nothing about importing symbols into the current package.// It is presumed that the caller will take care of that. For example, to import// all symbols:// // with (dojo.hostenv.loadModule("A.B")) {// ...// }// // And to import just the leaf symbol:// // var B = dojo.hostenv.loadModule("A.B");// ...// // dj_load is an alias for dojo.hostenv.loadModule if(!moduleName){ return; } omitModuleCheck = this._global_omit_module_check || omitModuleCheck; var module = this.findModule(moduleName, false); if(module){ return module; } // protect against infinite recursion from mutual dependencies if(dj_undef(moduleName, this.loading_modules_)){ this.addedToLoadingCount.push(moduleName); } this.loading_modules_[moduleName] = 1; // convert periods to slashes var relpath = moduleName.replace(/\./g, '/') + '.js'; var nsyms = moduleName.split("."); // this line allowed loading of a module manifest as if it were a namespace // it's an interesting idea, but shouldn't be combined with 'namespaces' proper // and leads to unwanted dependencies // the effect can be achieved in other (albeit less-flexible) ways now, so I am // removing this pending further design work // perhaps we can explicitly define this idea of a 'module manifest', and subclass // 'namespace manifest' from that //dojo.getNamespace(nsyms[0]); var syms = this.getModuleSymbols(moduleName); var startedRelative = ((syms[0].charAt(0) != '/') && !syms[0].match(/^\w+:/)); var last = syms[syms.length - 1]; var ok; // figure out if we're looking for a full package, if so, we want to do // things slightly diffrently if(last=="*"){ moduleName = nsyms.slice(0, -1).join('.'); while(syms.length){ syms.pop(); syms.push(this.pkgFileName); relpath = syms.join("/") + '.js'; if(startedRelative && relpath.charAt(0)=="/"){ relpath = relpath.slice(1); } ok = this.loadPath(relpath, !omitModuleCheck ? moduleName : null); if(ok){ break; } syms.pop(); } }else{ relpath = syms.join("/") + '.js'; moduleName = nsyms.join('.'); var modArg = !omitModuleCheck ? moduleName : null; ok = this.loadPath(relpath, modArg); if(!ok && !exactOnly){ syms.pop(); while(syms.length){ relpath = syms.join('/') + '.js'; ok = this.loadPath(relpath, modArg); if(ok){ break; } syms.pop(); relpath = syms.join('/') + '/'+this.pkgFileName+'.js'; if(startedRelative && relpath.charAt(0)=="/"){ relpath = relpath.slice(1); } ok = this.loadPath(relpath, modArg); if(ok){ break; } } } if(!ok && !omitModuleCheck){ dojo.raise("Could not load '" + moduleName + "'; last tried '" + relpath + "'"); } } // check that the symbol was defined //Don't bother if we're doing xdomain (asynchronous) loading. if(!omitModuleCheck && !this["isXDomain"]){ // pass in false so we can give better error module = this.findModule(moduleName, false); if(!module){ dojo.raise("symbol '" + moduleName + "' is not defined after loading '" + relpath + "'"); } } return module;}dojo.hostenv.startPackage = function(/*String*/packageName){// summary:// Creates a JavaScript package//// description:// startPackage("A.B") follows the path, and at each level creates a new empty// object or uses what already exists. It returns the result.//// packageName: the package to be created as a String in dot notation //Make sure we have a string. var fullPkgName = String(packageName); var strippedPkgName = fullPkgName; var syms = packageName.split(/\./); if(syms[syms.length-1]=="*"){ syms.pop(); strippedPkgName = syms.join("."); } var evaledPkg = dojo.evalObjPath(strippedPkgName, true); this.loaded_modules_[fullPkgName] = evaledPkg; this.loaded_modules_[strippedPkgName] = evaledPkg; return evaledPkg; // Object}dojo.hostenv.findModule = function(/*String*/moduleName, /*Boolean?*/mustExist){// summary:// Returns the Object representing the module, if it exists, otherwise null.//// moduleName A fully qualified module including package name, like 'A.B'.// mustExist Optional, default false. throw instead of returning null// if the module does not currently exist. var lmn = String(moduleName); if(this.loaded_modules_[lmn]){ return this.loaded_modules_[lmn]; // Object } if(mustExist){ dojo.raise("no loaded module named '" + moduleName + "'"); } return null; // null}//Start of old bootstrap2:dojo.kwCompoundRequire = function(/*Object containing Arrays*/modMap){// description:// This method taks a "map" of arrays which one can use to optionally load dojo// modules. The map is indexed by the possible dojo.hostenv.name_ values, with// two additional values: "default" and "common". The items in the "default"// array will be loaded if none of the other items have been choosen based on// the hostenv.name_ item. The items in the "common" array will _always_ be// loaded, regardless of which list is chosen. Here's how it's normally
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -