📄 dijit-all.js.uncompressed.js
字号:
var node = (args.node = dojo.byId(args.node)); var top = null; var left = null; var init = (function(n){ return function(){ var cs = dojo.getComputedStyle(n); var pos = cs.position; top = (pos == 'absolute' ? n.offsetTop : parseInt(cs.top) || 0); left = (pos == 'absolute' ? n.offsetLeft : parseInt(cs.left) || 0); if(pos != 'absolute' && pos != 'relative'){ var ret = dojo.coords(n, true); top = ret.y; left = ret.x; n.style.position="absolute"; n.style.top=top+"px"; n.style.left=left+"px"; } }; })(node); init(); var anim = dojo.animateProperty(dojo.mixin({ properties: { top: { end: args.top||0 }, left: { end: args.left||0 } } }, args)); dojo.connect(anim, "beforeBegin", anim, init); return anim; // dojo._Animation}}if(!dojo._hasResource["dijit.layout.ContentPane"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dijit.layout.ContentPane"] = true;dojo.provide("dijit.layout.ContentPane");dojo.declare( "dijit.layout.ContentPane", dijit._Widget,{ // summary: // A widget that acts as a Container for other widgets, and includes a ajax interface // description: // A widget that can be used as a standalone widget // or as a baseclass for other widgets // Handles replacement of document fragment using either external uri or javascript // generated markup or DOM content, instantiating widgets within that content. // Don't confuse it with an iframe, it only needs/wants document fragments. // It's useful as a child of LayoutContainer, SplitContainer, or TabContainer. // But note that those classes can contain any widget as a child. // example: // Some quick samples: // To change the innerHTML use .setContent('<b>new content</b>') // // Or you can send it a NodeList, .setContent(dojo.query('div [class=selected]', userSelection)) // please note that the nodes in NodeList will copied, not moved // // To do a ajax update use .setHref('url') // // href: String // The href of the content that displays now. // Set this at construction if you want to load data externally when the // pane is shown. (Set preload=true to load it immediately.) // Changing href after creation doesn't have any effect; see setHref(); href: "", // extractContent: Boolean // Extract visible content from inside of <body> .... </body> extractContent: false, // parseOnLoad: Boolean // parse content and create the widgets, if any parseOnLoad: true, // preventCache: Boolean // Cache content retreived externally preventCache: false, // preload: Boolean // Force load of data even if pane is hidden. preload: false, // refreshOnShow: Boolean // Refresh (re-download) content when pane goes from hidden to shown refreshOnShow: false, // loadingMessage: String // Message that shows while downloading loadingMessage: "<span class='dijitContentPaneLoading'>${loadingState}</span>", // errorMessage: String // Message that shows if an error occurs errorMessage: "<span class='dijitContentPaneError'>${errorState}</span>", // isLoaded: Boolean // Tells loading status see onLoad|onUnload for event hooks isLoaded: false, // class: String // Class name to apply to ContentPane dom nodes // TODO: this should be called "baseClass" like in the other widgets "class": "dijitContentPane", // doLayout: String/Boolean // false - don't adjust size of children // true - looks for the first sizable child widget (ie, having resize() method) and sets it's size to // however big the ContentPane is (TODO: implement) // auto - if there is a single sizable child widget (ie, having resize() method), set it's size to // however big the ContentPane is doLayout: "auto", postCreate: function(){ // remove the title attribute so it doesn't show up when i hover // over a node this.domNode.title = ""; if(!this.containerNode){ // make getDescendants() work this.containerNode = this.domNode; } if(this.preload){ this._loadCheck(); } var messages = dojo.i18n.getLocalization("dijit", "loading", this.lang); this.loadingMessage = dojo.string.substitute(this.loadingMessage, messages); this.errorMessage = dojo.string.substitute(this.errorMessage, messages); var curRole = dijit.getWaiRole(this.domNode); if (!curRole){ dijit.setWaiRole(this.domNode, "group"); } // for programatically created ContentPane (with <span> tag), need to muck w/CSS // or it's as though overflow:visible is set dojo.addClass(this.domNode, this["class"]); }, startup: function(){ if(this._started){ return; } if(this.doLayout != "false" && this.doLayout !== false){ this._checkIfSingleChild(); if(this._singleChild){ this._singleChild.startup(); } } this._loadCheck(); this.inherited(arguments); }, _checkIfSingleChild: function(){ // summary: // Test if we have exactly one widget as a child, and if so assume that we are a container for that widget, // and should propogate startup() and resize() calls to it. // TODO: if there are two child widgets (a data store and a TabContainer, for example), // should still find the TabContainer var childNodes = dojo.query(">", this.containerNode || this.domNode), childWidgets = childNodes.filter("[widgetId]"); if(childNodes.length == 1 && childWidgets.length == 1){ this.isContainer = true; this._singleChild = dijit.byNode(childWidgets[0]); }else{ delete this.isContainer; delete this._singleChild; } }, refresh: function(){ // summary: // Force a refresh (re-download) of content, be sure to turn off cache // we return result of _prepareLoad here to avoid code dup. in dojox.layout.ContentPane return this._prepareLoad(true); }, setHref: function(/*String|Uri*/ href){ // summary: // Reset the (external defined) content of this pane and replace with new url // Note: It delays the download until widget is shown if preload is false // href: // url to the page you want to get, must be within the same domain as your mainpage this.href = href; // we return result of _prepareLoad here to avoid code dup. in dojox.layout.ContentPane return this._prepareLoad(); }, setContent: function(/*String|DomNode|Nodelist*/data){ // summary: // Replaces old content with data content, include style classes from old content // data: // the new Content may be String, DomNode or NodeList // // if data is a NodeList (or an array of nodes) nodes are copied // so you can import nodes from another document implicitly // clear href so we cant run refresh and clear content // refresh should only work if we downloaded the content if(!this._isDownloaded){ this.href = ""; this._onUnloadHandler(); } this._setContent(data || ""); this._isDownloaded = false; // must be set after _setContent(..), pathadjust in dojox.layout.ContentPane if(this.parseOnLoad){ this._createSubWidgets(); } if(this.doLayout != "false" && this.doLayout !== false){ this._checkIfSingleChild(); if(this._singleChild && this._singleChild.resize){ this._singleChild.startup(); this._singleChild.resize(this._contentBox || dojo.contentBox(this.containerNode || this.domNode)); } } this._onLoadHandler(); }, cancel: function(){ // summary: // Cancels a inflight download of content if(this._xhrDfd && (this._xhrDfd.fired == -1)){ this._xhrDfd.cancel(); } delete this._xhrDfd; // garbage collect }, destroy: function(){ // if we have multiple controllers destroying us, bail after the first if(this._beingDestroyed){ return; } // make sure we call onUnload this._onUnloadHandler(); this._beingDestroyed = true; this.inherited("destroy",arguments); }, resize: function(size){ dojo.marginBox(this.domNode, size); // Compute content box size in case we [later] need to size child // If either height or width wasn't specified by the user, then query node for it. // But note that setting the margin box and then immediately querying dimensions may return // inaccurate results, so try not to depend on it. var node = this.containerNode || this.domNode, mb = dojo.mixin(dojo.marginBox(node), size||{}); this._contentBox = dijit.layout.marginBox2contentBox(node, mb); // If we have a single widget child then size it to fit snugly within my borders if(this._singleChild && this._singleChild.resize){ this._singleChild.resize(this._contentBox); } }, _prepareLoad: function(forceLoad){ // sets up for a xhrLoad, load is deferred until widget onShow // cancels a inflight download this.cancel(); this.isLoaded = false; this._loadCheck(forceLoad); }, _isShown: function(){ // summary: returns true if the content is currently shown if("open" in this){ return this.open; // for TitlePane, etc. }else{ var node = this.domNode; return (node.style.display != 'none') && (node.style.visibility != 'hidden'); } }, _loadCheck: function(/*Boolean*/ forceLoad){ // call this when you change onShow (onSelected) status when selected in parent container // it's used as a trigger for href download when this.domNode.display != 'none' // sequence: // if no href -> bail // forceLoad -> always load // this.preload -> load when download not in progress, domNode display doesn't matter // this.refreshOnShow -> load when download in progress bails, domNode display !='none' AND // this.open !== false (undefined is ok), isLoaded doesn't matter // else -> load when download not in progress, if this.open !== false (undefined is ok) AND // domNode display != 'none', isLoaded must be false var displayState = this._isShown(); if(this.href && (forceLoad || (this.preload && !this._xhrDfd) || (this.refreshOnShow && displayState && !this._xhrDfd) || (!this.isLoaded && displayState && !this._xhrDfd) ) ){ this._downloadExternalContent(); } }, _downloadExternalContent: function(){ this._onUnloadHandler(); // display loading message this._setContent( this.onDownloadStart.call(this) ); var self = this; var getArgs = { preventCache: (this.preventCache || this.refreshOnShow), url: this.href, handleAs: "text" }; if(dojo.isObject(this.ioArgs)){ dojo.mixin(getArgs, this.ioArgs); } var hand = this._xhrDfd = (this.ioMethod || dojo.xhrGet)(getArgs); hand.addCallback(function(html){ try{ self.onDownloadEnd.call(self); self._isDownloaded = true; self.setContent.call(self, html); // onload event is called from here }catch(err){ self._onError.call(self, 'Content', err); // onContentError } delete self._xhrDfd; return html; }); hand.addErrback(function(err){ if(!hand.cancelled){ // show error message in the pane self._onError.call(self, 'Download', err); // onDownloadError } delete self._xhrDfd; return err; }); }, _onLoadHandler: function(){ this.isLoaded = true; try{ this.onLoad.call(this); }catch(e){ console.error('Error '+this.widgetId+' running custom onLoad code'); } }, _onUnloadHandler: function(){ this.isLoaded = false; this.cancel(); try{ this.onUnload.call(this); }catch(e){ console.error('Error '+this.widgetId+' running custom onUnload code'); } }, _setContent: function(cont){ this.destroyDescendants(); try{ var node = this.containerNode || this.domNode; while(node.firstChild){ dojo._destroyElement(node.firstChild); } if(typeof cont == "string"){ // dijit.ContentPane does only minimal fixes, // No pathAdjustments, script retrieval, style clean etc // some of these should be available in the dojox.layout.ContentPane if(this.extractContent){ match = cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im); if(match){ cont = match[1]; } } node.innerHTML = cont; }else{ // domNode or NodeList if(cont.nodeType){ // domNode (htmlNode 1 or textNode 3) node.appendChild(cont); }else{// nodelist or array such as dojo.Nodelist dojo.forEach(cont, function(n){ node.appendChild(n.cloneNode(true)); }); } } }catch(e){ // check if a domfault occurs when we are appending this.errorMessage // like for instance if domNode is a UL and we try append a DIV var errMess = this.onContentError(e); try{ node.innerHTML = errMess; }catch(e){ console.error('Fatal '+this.id+' could not change content due to '+e.message, e); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -