如何让ExtJS Classic 6.5中指定ToolTip不显示背景遮罩?
解决ExtJS Classic 6.5指定Tooltip关闭背景遮罩的问题
要仅关闭特定Ext.tip.ToolTip子类的背景遮罩,同时保留其他Tooltip的遮罩效果,核心是通过配置覆盖的方式,单独禁用该子类的模态遮罩特性:
方案一:在自定义Tooltip类中显式禁用模态
ExtJS中Tooltip的背景遮罩通常由modal配置控制(继承自Ext.panel.Panel),默认值为false,但如果项目全局配置或父类配置将其设为true,只需在自定义子类中显式覆盖该配置即可:
Ext.define('YourApp.tip.CustomNoMaskTooltip', { extend: 'Ext.tip.ToolTip', alias: 'widget.customnomasktooltip', // 关键配置:禁用模态,关闭背景遮罩 modal: false, initComponent: function() { this.callParent(arguments); // 你的自定义初始化逻辑 } });
使用该子类创建Tooltip实例时,就不会生成灰色遮罩,而其他未覆盖modal配置的Tooltip仍会保留原有遮罩。
方案二:针对实例单独配置
如果不需要修改类定义,也可以在创建特定Tooltip实例时直接指定modal: false:
// 针对单个Tooltip实例禁用遮罩 Ext.create('Ext.tip.ToolTip', { target: 'your-target-element-id', html: '无需遮罩的提示内容', modal: false });
特殊情况处理
如果上述配置不生效,可能是遮罩由自定义逻辑或第三方扩展生成,可在Tooltip的onShow方法中手动隐藏对应遮罩元素:
Ext.define('YourApp.tip.CustomNoMaskTooltip', { extend: 'Ext.tip.ToolTip', alias: 'widget.customnomasktooltip', onShow: function() { this.callParent(arguments); // 隐藏当前Tooltip自身的遮罩 if (this.mask) { this.mask.hide(); } // 若为全局遮罩,判断当前激活的是本Tooltip时隐藏 var globalMask = Ext.get('ext-el-mask'); if (globalMask && this.isVisible()) { globalMask.hide(); } } });
内容的提问来源于stack exchange,提问作者NoLongerBreathedIn
相关产品推荐
相关产品推荐

