mask : function () {}
Puts a mask over this element to disable user interaction. Requires core.css.
This method can only be applied to elements which accept child nodes.
只有该元素能够添加子元素时,才能够调用mask成功 ,也就是说,一般只有块状元素才能有遮罩层。
mask: function (msg, msgCls) { //如果当前元素没有定位 则要定位 ,因为灰色mask层要相对当前元素绝对定位 0,0 if (this.getStyle("position") == "static") { this.addClass("x-masked-relative"); } //mask 文字信息 if (this._maskMsg) { this._maskMsg.remove(); } //mask 层 if (this._mask) { this._mask.remove(); }、 //创建mask层 this._mask = Ext.DomHelper.append(this.dom, { cls: "ext-el-mask" }, true); /* 绝对定位 absolute top 0 left 0 z-index:9999 目的是要遮住当前元素 */ this.addClass("x-masked"); this._mask.setDisplayed(true); /* 同理设置遮蔽文字 并调用center相对当前元素中 ,center() TODO 简析 */ if (typeof msg == 'string') { this._maskMsg = Ext.DomHelper.append(this.dom, { cls: "ext-el-mask-msg", cn: { tag: 'div' } }, true); var mm = this._maskMsg; mm.dom.className = msgCls ? "ext-el-mask-msg " + msgCls : "ext-el-mask-msg"; mm.dom.firstChild.innerHTML = msg; mm.setDisplayed(true); mm.center(this); } //设置 mask层 大小 刚好覆盖住 当前元素 ,在当前元素之上 if (Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && this.getStyle('height') == 'auto') { // ie will not expand full height automatically this._mask.setSize(this.getWidth(), this.getHeight()); } return this._mask; },
这是对一般元素的 mask ,但是遇到要 mask的是 body 时就会有问题了 ,所以ext里没 Ext.getBody().mask(),而是单独处理了,参见 Ext.window.show(), 下次解析。