1.情景再现
页面上有一个确认按钮,当按钮禁用时,鼠标hover按钮时tooltip会根据字段显示不能确认的原因。但在测试时发现某个同事的谷歌浏览器上hover按钮时,只有按钮的禁用标志,tooltip的提示内容却没有显示出来。代码如下:
<el-tooltip
:content="status ? '已失效' : ''"
:disabled="!status "
>
<el-button
:disabled="status "
@click="handleClick"
>
确认
</el-button>
</el-tooltip>
2.问题定位及原因分析
审查定位该元素
这里的工作原理其实就是给需要展示文字提示的按钮加上一个类名el-tooltip,当鼠标移入的时候,有这个类名的就悬浮出文字提示。并且在dom树中生成一个div用来表示tooltip的提示。
这里有几个不保真的猜想:
- 如果直接使用这个el-tooltip的话,这个类名就会加到按钮上,又因按钮已经被禁用了,就会禁掉文字提示的悬浮出现导致效果不会出现。
- 版本影响:chrome v117以上显示正常,v114就不显示了。(直接升级版本就不用改代码,但万一客户投诉,总不好拿这个理由搪塞人家)
3.解决办法
- 在el-button的外层,再加上一个div包裹起来,这样类名el-tooltip就会加到div身上,就不会受到按钮禁用的影响了。
<el-tooltip
:content="status ? '已失效' : ''"
:disabled="!status "
>
<div>
<el-button
:disabled="status "
@click="handleClick"
>
确认
</el-button>
</div>
</el-tooltip>
2.不使用el-button组件,改用span代替。(需要自定义一些hover和滑出的基础样式)
<el-tooltip
:content="status ? '已失效' : ''"
placement="left"
:disabled="!status"
>
<span @click="handleClick()">确认</span>
</el-tooltip>
4.参考来源
- el-button禁用后,按钮上el-tooltip的内容无法触发的问题 blog.csdn.net/weixin_3960…
- 饿了么UI按钮禁用时加文字提示,按钮正常时不加文字提示(el-tooltip使用注意事项) zhuanlan.zhihu.com/p/353598379