📄 loader.js
字号:
} canCall = after; }; })(false), bindObj:null, unHook:(function (w, wg) { var oldProps = {isContainer:w.isContainer, adjustPats:w.adjustPaths, href:w.href, extractContent:w.extractContent, parseContent:w.parseContent, cacheContent:w.cacheContent, bindArgs:w.bindArgs, preload:w.preload, refreshOnShow:w.refreshOnShow, handler:w.handler, trackHistory:w.trackHistory, executeScripts:w.executeScripts, scriptScope:w.scriptScope, postCreate:w.postCreate, show:w.show, refresh:w.refresh, loadContents:w.loadContents, abort:w.abort, destroy:w.destroy, onLoad:w.onLoad, onUnLoad:w.onUnLoad, addOnLoad:w.addOnLoad, addOnUnLoad:w.addOnUnLoad, onDownloadStart:w.onDownloadStart, onDownloadEnd:w.onDownloadEnd, onDownloadError:w.onDownloadError, onContentError:w.onContentError, onExecError:w.onExecError, onSetContent:w.onSetContent, setUrl:w.setUrl, setContent:w.setContent, onContentParse:w.onContentParse, onExecScript:w.onExecScript, setHandler:w.setHandler}; return function () { if (wg.abort) { wg.abort(); } if ((w != wg) && (dojo.widget.byType(wg.widgetType).length > 1)) { return; } for (var x in oldProps) { if (oldProps[x] === undefined) { delete w[x]; continue; } w[x] = oldProps[x]; } delete wg._loader_defined; delete wg.loader; }; })(widgetProto, widget)}; if (widgetProto._loader_defined || widget._loader_defined) { return; } dojo.mixin(widgetProto, {isContainer:true, adjustPaths:undef(widgetProto.adjustPaths) ? true : widgetProto.adjustPaths, href:undef(widgetProto.href) ? "" : widgetProto.href, extractContent:undef(widgetProto.extractContent) ? true : widgetProto.extractContent, parseContent:undef(widgetProto.parseContent) ? true : widgetProto.parseContent, cacheContent:undef(widgetProto.cacheContent) ? true : widgetProto.cacheContent, bindArgs:undef(widgetProto.bindArgs) ? {} : widgetProto.bindArgs, preload:undef(widgetProto.preload) ? false : widgetProto.preload, refreshOnShow:undef(widgetProto.refreshOnShow) ? false : widgetProto.refreshOnShow, handler:undef(widgetProto.handler) ? "" : widgetProto.handler, executeScripts:undef(widgetProto.executeScripts) ? false : widgetProto.executeScripts, trackHistory:undef(widgetProto.tracHistory) ? false : widgetProto.trackHistory, scriptScope:null}); widgetProto.postCreate = (function (postCreate) { return function () { if (widgetProto.constructor.superclass.postCreate != postCreate) { postCreate.apply(this, arguments); } else { widgetProto.constructor.superclass.postCreate.apply(this, arguments); } if (this.handler !== "") { this.setHandler(this.handler); } if (this.isShowing() || this.preload) { this.loadContents(); if (!this.href) { _loader._log(this, (this.domNode || this.containerNode).innerHTML); } } }; })(widgetProto.postCreate); widgetProto.show = (function (show) { return function () { if (this.refreshOnShow) { this.refresh(); } else { this.loadContents(); } if ((widgetProto.constructor.superclass.show == show) || !isFunc(show)) { widgetProto.constructor.superclass.show.apply(this, arguments); } else { show.apply(this, arguments); } }; })(widgetProto.show); widgetProto.destroy = (function (destroy) { return function (destroy) { this.onUnLoad(); this.abort(); this.loader.unHook(); if ((widgetProto.constructor.superclass.destroy != destroy) && isFunc(destroy)) { destroy.apply(this, arguments); } else { widgetProto.constructor.superclass.destroy.apply(this, arguments); } }; })(widgetProto.destroy); if (!widgetProto.refresh) { widgetProto.refresh = function () { this.loader.isLoaded = false; this.loadContents(); }; } if (!widgetProto.loadContents) { widgetProto.loadContents = function () { if (this.loader.isLoaded) { return; } if (isFunc(this.handler)) { runHandler.call(this); } else { if (this.href !== "") { handleDefaults.call(this, "Loading...", "onDownloadStart"); var self = this, url = this.href; downloader.call(this, {url:url, load:function (type, data, xhr) { self.onDownloadEnd.call(self, url, data); }, error:function (type, err, xhr) { var e = {responseText:xhr.responseText, status:xhr.status, statusText:xhr.statusText, responseHeaders:(xhr.getAllResponseHeaders) ? xhr.getAllResponseHeaders() : [], _text:"Error loading '" + url + "' (" + xhr.status + " " + xhr.statusText + ")"}; handleDefaults.call(self, e, "onDownloadError"); self.onLoad(); }}); } } }; } if (!widgetProto.abort) { widgetProto.abort = function () { if (!this.loader || !this.loader.bindObj || !this.loader.bindObj.abort) { return; } this.loader.bindObj.abort(); this.loader.bindObj = null; }; } if (!widgetProto.onLoad) { widgetProto.onLoad = function () { stackRunner.call(this, this.loader.addOnLoads); this.loader.isLoaded = true; }; } if (!widgetProto.onUnLoad) { widgetProto.onUnLoad = function () { stackRunner.call(this, this.loader.addOnUnLoads); delete this.scriptScope; }; } if (!widgetProto.addOnLoad) { widgetProto.addOnLoad = function (obj, func) { stackPusher.call(this, this.loader.addOnLoads, obj, func); }; } if (!widgetProto.addOnUnLoad) { widgetProto.addOnUnLoad = function (obj, func) { stackPusher.call(this, this.loader.addOnUnLoads, obj, func); }; } if (!widgetProto.onExecError) { widgetProto.onExecError = function () { }; } if (!widgetProto.onContentError) { widgetProto.onContentError = function () { }; } if (!widgetProto.onDownloadError) { widgetProto.onDownloadError = function () { }; } if (!widgetProto.onDownloadStart) { widgetProto.onDownloadStart = function (onDownloadStart) { }; } if (!widgetProto.onDownloadEnd) { widgetProto.onDownloadEnd = function (url, data) { var args = {content:data, url:url, adjustPaths:this.adjustPaths, collectScripts:this.executeScripts, collectRequires:this.parseContent, bodyExtract:this.extractContent}; data = _loader.splitAndFixPaths.call(this, args); this.setContent(data); }; } if (!widgetProto.onSetContent) { widgetProto.onSetContent = function (cont) { this.destroyChildren(); var styleNodes = this.loader.styleNodes; while (styleNodes.length) { var st = styleNodes.pop(); if (st && st.parentNode) { st.parentNode.removeChild(st); } } var node = this.containerNode || this.domNode; while (node.firstChild) { try { dojo.event.browser.clean(node.firstChild); } catch (e) { } node.removeChild(node.firstChild); } try { if (typeof cont != "string") { node.appendChild(cont); } else { try { node.innerHTML = cont; } catch (e) { var tmp; (tmp = dojo.doc().createElement("div")).innerHTML = cont; while (tmp.firstChild) { node.appendChild(tmp.removeChild(tmp.firstChild)); } } } } catch (e) { e._text = "Could'nt load content: " + e; var useAlert = (this.loader._onSetContent_err == e._text); this.loader._onSetContent_err = e._text; handleDefaults.call(this, e, "onContentError", useAlert); } }; } if (!widgetProto.setUrl) { widgetProto.setUrl = function (url) { this.href = url; this.loader.isLoaded = false; if (this.preload || this.isShowing()) { this.loadContents(); } }; } if (!widgetProto.setContent) { widgetProto.setContent = function (data, dontLog) { this.loader.callOnUnLoad.call(this, true); if (!data || dojo.html.isNode(data)) { this.onSetContent(data); refreshed.call(this); } else { if (typeof data.xml != "string") { this.href = ""; var args = {content:data, url:this.href, adjustPaths:this.adjustPaths, collectScripts:this.executeScripts, collectRequires:this.parseContent, bodyExtract:this.extractContent}; data = _loader.splitAndFixPaths.call(this, args); } else { if (data.url != "./") { this.url = data.url; } } this.onSetContent(data.xml); for (var i = 0, styles = data.styles; i < styles.length; i++) { if (styles[i].path) { this.loader.styleNodes.push(dojo.html.insertCssFile(styles[i].path)); } else { this.loader.styleNodes.push(dojo.html.insertCssText(styles[i])); } } if (this.parseContent) { for (var i = 0, requires = data.requires; i < requires.length; i++) { try { eval(requires[i]); } catch (e) { e._text = "dojo.widget.html.loader.hookUp: error in package loading calls, " + (e.description || e); handleDefaults.call(this, e, "onContentError", true); } } } if (dojo.hostenv.isXDomain && data.requires.length) { dojo.addOnLoad(function () { asyncParse.call(this, data); if (!dontLog) { _loader._log(this, data); } }); dontLog = true; } else { asyncParse.call(this, data); } } if (!dontLog) { } }; } if (!widgetProto.onContentParse) { widgetProto.onContentParse = function () { var node = this.containerNode || this.domNode; var parser = new dojo.xml.Parse(); var frag = parser.parseElement(node, null, true); dojo.widget.getParser().createSubComponents(frag, this); }; } if (!widgetProto.onExecScript) { widgetProto.onExecScript = function (scripts) { var self = this, tmp = "", code = ""; for (var i = 0; i < scripts.length; i++) { if (scripts[i].path) { var url = scripts[i].path; downloader.call(this, {"url":url, "load":function (type, scriptStr) { (function () { tmp = scriptStr; scripts[i] = scriptStr; }).call(self); }, "error":function (type, error) { error._text = type + " downloading remote script"; handleDefaults.call(self, error, "onExecError", true); }, "mimetype":"text/plain", "sync":true}); code += tmp; } else { code += scripts[i]; } } try { delete this.scriptScope; this.scriptScope = new (new Function("_container_", code + "; return this;"))(self); } catch (e) { e._text = "Error running scripts from content:\n" + (e.description || e.toString()); handleDefaults.call(this, e, "onExecError", true); } }; } if (!widgetProto.setHandler) { widgetProto.setHandler = function (handler) { var fcn = dojo.lang.isFunction(handler) ? handler : window[handler]; if (!isFunc(fcn)) { handleDefaults.call(this, "Unable to set handler, '" + handler + "' not a function.", "onExecError", true); return; } this.handler = function () { return fcn.apply(this, arguments); }; }; } widgetProto._loader_defined = true; };})();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -