loader_xd.js
资源名称:oa.rar [点击查看]
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:12k
源码类别:
OA系统
开发平台:
Java
- /*
- Copyright (c) 2004-2006, The Dojo Foundation
- All Rights Reserved.
- Licensed under the Academic Free License version 2.1 or above OR the
- modified BSD license. For more information on Dojo licensing, see:
- http://dojotoolkit.org/community/licensing.shtml
- */
- dojo.hostenv.resetXd = function () {
- this.isXDomain = djConfig.useXDomain || false;
- this.xdTimer = 0;
- this.xdInFlight = {};
- this.xdOrderedReqs = [];
- this.xdDepMap = {};
- this.xdContents = [];
- this.xdDefList = [];
- };
- dojo.hostenv.resetXd();
- dojo.hostenv.createXdPackage = function (contents, resourceName, resourcePath) {
- var deps = [];
- var depRegExp = /dojo.(requireLocalization|require|requireIf|requireAll|provide|requireAfterIf|requireAfter|kwCompoundRequire|conditionalRequire|hostenv.conditionalLoadModule|.hostenv.loadModule|hostenv.moduleLoaded)(([wW]*?))/mg;
- var match;
- while ((match = depRegExp.exec(contents)) != null) {
- if (match[1] == "requireLocalization") {
- eval(match[0]);
- } else {
- deps.push(""" + match[1] + "", " + match[2]);
- }
- }
- var output = [];
- output.push("dojo.hostenv.packageLoaded({n");
- if (deps.length > 0) {
- output.push("depends: [");
- for (var i = 0; i < deps.length; i++) {
- if (i > 0) {
- output.push(",n");
- }
- output.push("[" + deps[i] + "]");
- }
- output.push("],");
- }
- output.push("ndefinePackage: function(dojo){");
- output.push(contents);
- output.push("n}, resourceName: '" + resourceName + "', resourcePath: '" + resourcePath + "'});");
- return output.join("");
- };
- dojo.hostenv.loadPath = function (relpath, module, cb) {
- var colonIndex = relpath.indexOf(":");
- var slashIndex = relpath.indexOf("/");
- var uri;
- var currentIsXDomain = false;
- if (colonIndex > 0 && colonIndex < slashIndex) {
- uri = relpath;
- this.isXDomain = currentIsXDomain = true;
- } else {
- uri = this.getBaseScriptUri() + relpath;
- colonIndex = uri.indexOf(":");
- slashIndex = uri.indexOf("/");
- if (colonIndex > 0 && colonIndex < slashIndex && (!location.host || uri.indexOf("http://" + location.host) != 0)) {
- this.isXDomain = currentIsXDomain = true;
- }
- }
- if (djConfig.cacheBust && dojo.render.html.capable) {
- uri += "?" + String(djConfig.cacheBust).replace(/W+/g, "");
- }
- try {
- return ((!module || this.isXDomain) ? this.loadUri(uri, cb, currentIsXDomain, module) : this.loadUriAndCheck(uri, module, cb));
- }
- catch (e) {
- dojo.debug(e);
- return false;
- }
- };
- dojo.hostenv.loadUri = function (uri, cb, currentIsXDomain, module) {
- if (this.loadedUris[uri]) {
- return 1;
- }
- if (this.isXDomain && module) {
- if (uri.indexOf("__package__") != -1) {
- module += ".*";
- }
- this.xdOrderedReqs.push(module);
- if (currentIsXDomain || uri.indexOf("/nls/") == -1) {
- this.xdInFlight[module] = true;
- this.inFlightCount++;
- }
- if (!this.xdTimer) {
- this.xdTimer = setInterval("dojo.hostenv.watchInFlightXDomain();", 100);
- }
- this.xdStartTime = (new Date()).getTime();
- }
- if (currentIsXDomain) {
- var lastIndex = uri.lastIndexOf(".");
- if (lastIndex <= 0) {
- lastIndex = uri.length - 1;
- }
- var xdUri = uri.substring(0, lastIndex) + ".xd";
- if (lastIndex != uri.length - 1) {
- xdUri += uri.substring(lastIndex, uri.length);
- }
- var element = document.createElement("script");
- element.type = "text/javascript";
- element.src = xdUri;
- if (!this.headElement) {
- this.headElement = document.getElementsByTagName("head")[0];
- if (!this.headElement) {
- this.headElement = document.getElementsByTagName("html")[0];
- }
- }
- this.headElement.appendChild(element);
- } else {
- var contents = this.getText(uri, null, true);
- if (contents == null) {
- return 0;
- }
- if (this.isXDomain && uri.indexOf("/nls/") == -1) {
- var pkg = this.createXdPackage(contents, module, uri);
- dj_eval(pkg);
- } else {
- if (cb) {
- contents = "(" + contents + ")";
- }
- var value = dj_eval(contents);
- if (cb) {
- cb(value);
- }
- }
- }
- this.loadedUris[uri] = true;
- return 1;
- };
- dojo.hostenv.packageLoaded = function (pkg) {
- var deps = pkg.depends;
- var requireList = null;
- var requireAfterList = null;
- var provideList = [];
- if (deps && deps.length > 0) {
- var dep = null;
- var insertHint = 0;
- var attachedPackage = false;
- for (var i = 0; i < deps.length; i++) {
- dep = deps[i];
- if (dep[0] == "provide" || dep[0] == "hostenv.moduleLoaded") {
- provideList.push(dep[1]);
- } else {
- if (!requireList) {
- requireList = [];
- }
- if (!requireAfterList) {
- requireAfterList = [];
- }
- var unpackedDeps = this.unpackXdDependency(dep);
- if (unpackedDeps.requires) {
- requireList = requireList.concat(unpackedDeps.requires);
- }
- if (unpackedDeps.requiresAfter) {
- requireAfterList = requireAfterList.concat(unpackedDeps.requiresAfter);
- }
- }
- var depType = dep[0];
- var objPath = depType.split(".");
- if (objPath.length == 2) {
- dojo[objPath[0]][objPath[1]].apply(dojo[objPath[0]], dep.slice(1));
- } else {
- dojo[depType].apply(dojo, dep.slice(1));
- }
- }
- var contentIndex = this.xdContents.push({content:pkg.definePackage, resourceName:pkg["resourceName"], resourcePath:pkg["resourcePath"], isDefined:false}) - 1;
- for (var i = 0; i < provideList.length; i++) {
- this.xdDepMap[provideList[i]] = {requires:requireList, requiresAfter:requireAfterList, contentIndex:contentIndex};
- }
- for (var i = 0; i < provideList.length; i++) {
- this.xdInFlight[provideList[i]] = false;
- }
- }
- };
- dojo.hostenv.xdLoadFlattenedBundle = function (moduleName, bundleName, locale, bundleData) {
- locale = locale || "root";
- var jsLoc = dojo.hostenv.normalizeLocale(locale).replace("-", "_");
- var bundlePackage = [moduleName, "nls", bundleName].join(".");
- var bundle = dojo.hostenv.startPackage(bundlePackage);
- bundle[jsLoc] = bundleData;
- var mapName = [moduleName, jsLoc, bundleName].join(".");
- var bundleMap = dojo.hostenv.xdBundleMap[mapName];
- if (bundleMap) {
- for (var param in bundleMap) {
- bundle[param] = bundleData;
- }
- }
- };
- dojo.hostenv.xdBundleMap = {};
- dojo.xdRequireLocalization = function (moduleName, bundleName, locale, availableFlatLocales) {
- var locales = availableFlatLocales.split(",");
- var jsLoc = dojo.hostenv.normalizeLocale(locale);
- var bestLocale = "";
- for (var i = 0; i < locales.length; i++) {
- if (jsLoc.indexOf(locales[i]) == 0) {
- if (locales[i].length > bestLocale.length) {
- bestLocale = locales[i];
- }
- }
- }
- var fixedBestLocale = bestLocale.replace("-", "_");
- var bundlePackage = dojo.evalObjPath([moduleName, "nls", bundleName].join("."));
- if (bundlePackage && bundlePackage[fixedBestLocale]) {
- bundle[jsLoc.replace("-", "_")] = bundlePackage[fixedBestLocale];
- } else {
- var mapName = [moduleName, (fixedBestLocale || "root"), bundleName].join(".");
- var bundleMap = dojo.hostenv.xdBundleMap[mapName];
- if (!bundleMap) {
- bundleMap = dojo.hostenv.xdBundleMap[mapName] = {};
- }
- bundleMap[jsLoc.replace("-", "_")] = true;
- dojo.require(moduleName + ".nls" + (bestLocale ? "." + bestLocale : "") + "." + bundleName);
- }
- };
- (function () {
- var extra = djConfig.extraLocale;
- if (extra) {
- if (!extra instanceof Array) {
- extra = [extra];
- }
- dojo._xdReqLoc = dojo.xdRequireLocalization;
- dojo.xdRequireLocalization = function (m, b, locale, fLocales) {
- dojo._xdReqLoc(m, b, locale, fLocales);
- if (locale) {
- return;
- }
- for (var i = 0; i < extra.length; i++) {
- dojo._xdReqLoc(m, b, extra[i], fLocales);
- }
- };
- }
- })();
- dojo.hostenv.unpackXdDependency = function (dep) {
- var newDeps = null;
- var newAfterDeps = null;
- switch (dep[0]) {
- case "requireIf":
- case "requireAfterIf":
- case "conditionalRequire":
- if ((dep[1] === true) || (dep[1] == "common") || (dep[1] && dojo.render[dep[1]].capable)) {
- newDeps = [{name:dep[2], content:null}];
- }
- break;
- case "requireAll":
- dep.shift();
- newDeps = dep;
- dojo.hostenv.flattenRequireArray(newDeps);
- break;
- case "kwCompoundRequire":
- case "hostenv.conditionalLoadModule":
- var modMap = dep[1];
- var common = modMap["common"] || [];
- var newDeps = (modMap[dojo.hostenv.name_]) ? common.concat(modMap[dojo.hostenv.name_] || []) : common.concat(modMap["default"] || []);
- dojo.hostenv.flattenRequireArray(newDeps);
- break;
- case "require":
- case "requireAfter":
- case "hostenv.loadModule":
- newDeps = [{name:dep[1], content:null}];
- break;
- }
- if (dep[0] == "requireAfterIf" || dep[0] == "requireIf") {
- newAfterDeps = newDeps;
- newDeps = null;
- }
- return {requires:newDeps, requiresAfter:newAfterDeps};
- };
- dojo.hostenv.xdWalkReqs = function () {
- var reqChain = null;
- var req;
- for (var i = 0; i < this.xdOrderedReqs.length; i++) {
- req = this.xdOrderedReqs[i];
- if (this.xdDepMap[req]) {
- reqChain = [req];
- reqChain[req] = true;
- this.xdEvalReqs(reqChain);
- }
- }
- };
- dojo.hostenv.xdEvalReqs = function (reqChain) {
- while (reqChain.length > 0) {
- var req = reqChain[reqChain.length - 1];
- var pkg = this.xdDepMap[req];
- if (pkg) {
- var reqs = pkg.requires;
- if (reqs && reqs.length > 0) {
- var nextReq;
- for (var i = 0; i < reqs.length; i++) {
- nextReq = reqs[i].name;
- if (nextReq && !reqChain[nextReq]) {
- reqChain.push(nextReq);
- reqChain[nextReq] = true;
- this.xdEvalReqs(reqChain);
- }
- }
- }
- var contents = this.xdContents[pkg.contentIndex];
- if (!contents.isDefined) {
- var content = contents.content;
- content["resourceName"] = contents["resourceName"];
- content["resourcePath"] = contents["resourcePath"];
- this.xdDefList.push(content);
- contents.isDefined = true;
- }
- this.xdDepMap[req] = null;
- var reqs = pkg.requiresAfter;
- if (reqs && reqs.length > 0) {
- var nextReq;
- for (var i = 0; i < reqs.length; i++) {
- nextReq = reqs[i].name;
- if (nextReq && !reqChain[nextReq]) {
- reqChain.push(nextReq);
- reqChain[nextReq] = true;
- this.xdEvalReqs(reqChain);
- }
- }
- }
- }
- reqChain.pop();
- }
- };
- dojo.hostenv.clearXdInterval = function () {
- clearInterval(this.xdTimer);
- this.xdTimer = 0;
- };
- dojo.hostenv.watchInFlightXDomain = function () {
- var waitInterval = (djConfig.xdWaitSeconds || 15) * 1000;
- if (this.xdStartTime + waitInterval < (new Date()).getTime()) {
- this.clearXdInterval();
- var noLoads = "";
- for (var param in this.xdInFlight) {
- if (this.xdInFlight[param]) {
- noLoads += param + " ";
- }
- }
- dojo.raise("Could not load cross-domain packages: " + noLoads);
- }
- for (var param in this.xdInFlight) {
- if (this.xdInFlight[param]) {
- return;
- }
- }
- this.clearXdInterval();
- this.xdWalkReqs();
- var defLength = this.xdDefList.length;
- for (var i = 0; i < defLength; i++) {
- var content = dojo.hostenv.xdDefList[i];
- if (djConfig["debugAtAllCosts"] && content["resourceName"]) {
- if (!this["xdDebugQueue"]) {
- this.xdDebugQueue = [];
- }
- this.xdDebugQueue.push({resourceName:content.resourceName, resourcePath:content.resourcePath});
- } else {
- content(dojo);
- }
- }
- for (var i = 0; i < this.xdContents.length; i++) {
- var current = this.xdContents[i];
- if (current.content && !current.isDefined) {
- current.content(dojo);
- }
- }
- this.resetXd();
- if (this["xdDebugQueue"] && this.xdDebugQueue.length > 0) {
- this.xdDebugFileLoaded();
- } else {
- this.xdNotifyLoaded();
- }
- };
- dojo.hostenv.xdNotifyLoaded = function () {
- this.inFlightCount = 0;
- if (this._djInitFired && !this.loadNotifying) {
- this.callLoaded();
- }
- };
- dojo.hostenv.flattenRequireArray = function (target) {
- if (target) {
- for (var i = 0; i < target.length; i++) {
- if (target[i] instanceof Array) {
- target[i] = {name:target[i][0], content:null};
- } else {
- target[i] = {name:target[i], content:null};
- }
- }
- }
- };
- dojo.hostenv.xdHasCalledPreload = false;
- dojo.hostenv.xdRealCallLoaded = dojo.hostenv.callLoaded;
- dojo.hostenv.callLoaded = function () {
- if (this.xdHasCalledPreload || dojo.hostenv.getModulePrefix("dojo") == "src" || !this.localesGenerated) {
- this.xdRealCallLoaded();
- } else {
- if (this.localesGenerated) {
- this.registerNlsPrefix = function () {
- dojo.registerModulePath("nls", dojo.hostenv.getModulePrefix("dojo") + "/../nls");
- };
- this.preloadLocalizations();
- }
- }
- this.xdHasCalledPreload = true;
- };