解决方案: 大家可以用这个插件,css-loader-deep-remove 代替css-loader

发现使用chrome最新版(v89),有个别样式出现了问题,排查定位后发现是有些错误地嵌套使用/deep/,在v88下是没问题的,但在v89下就出现了问题,不再生效。我们使用VUE框架,ElementUI组件库,Dialog控件样式(SCSS)写成了:

1
2
3
4
5
6
7
.my-dialog{
/deep/ .el-dialog {
/deep/ .el-dialog__body{
height: 600px;
}
}
}

 注意,嵌套使用/deep/是错误的,但在之前的版本没有发现问题便没发现。转换后就是:

1
2
3
.my-dialog[data-v-0a1304a6] .el-dialog /deep/ .el-dialog__body {
height: 600px;
}

  嵌套使用/deep/只会让第一个/deep/生效,第二个是不作处理的,之前没意识到这个问题犯错了。

问题重现

 为了重现问题,特意下载了便携版chrome(v88)来对比(为了防止中毒,还额外研究了windows下沙盒,在沙盒里运行这软件),如图所示(测试代码附在最后):

issuehunt提交

 可以看到,在v88中,多出一个/deep/并不影响,但在v89里是不行的,搜索了一下,发现chromestatus chromestatus里有:

 The /deep/ combinator was a part of Shadow DOM v0, which has been deprecated and removed. Starting in M63, the /deep/ combinator was treated as a no-op, equivalent to a space “ “ combinator. As the code for all of Shadow DOM v0 was removed completely in M89, /deep/ will now throw exceptions in some JS operations, such as querySelectorAll. Simply replace it with “ “ to get pre-M89 behavior back.

 翻译过来的意思是,在89之前,chrome浏览器会将/deep/ 当作空格字符串来处理,后面就完整删除Shadow DOM v0的内容了。

posted on   ygunoil  阅读(1550)  评论(2编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2020-03-16 javascript 自动触发 按键盘操作 trigger
2020-03-16 利用Javascript检测开发者工具Devtools是否打开
2020-03-16 爬虫笔记之JS检测浏览器开发者工具是否打开
2020-03-16 上海租房@8群
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示