You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 12:37:18