React、Vue、Ember 等前端开发者们,请暂缓更新到 Chrome 59


prtyaa
prtyaa 2023-12-25 14:35:11 63144
分类专栏: 资讯

昨天下午休息的时候,发现我工作用的 Mac Mini 在疯狂地散热中,打开 Activity Monitor 发现是 Chrome 浏览器导致的,再打开 Chrome 的 Task Manager 发现是 Developer Tools,如下图所示:

内存正常,但是这个 CPU,有点夸张。

于是,我:

  • 新起了一个用户进程,发现没有这个问题
  • 把自用的浏览器插件都禁掉,发现正常
  • 关了 Developer Tool,也发现不会出现这个情况

便怀疑是插件的问题,然后就手动地一个个开启,发现是 React Dev Tools 的问题。整理了一下触发这个问题的条件:

  1. Chrome 浏览器里安装了 React Dev Tool 插件
  2. 在 Tab 1 中打开了 Chrome 的 Developer tool
  3. 切换到 Tab 2,让 Tab 1 与 Dev Tool 在后台运行

随后,在 React Dev Tool 的 GitHub 上发现了相应的 issue:High CPU when tab is in background #739

而触发 Issue 的代码则是:

var loadCheckInterval = setInterval(function() {  createPanelIfReactLoaded();}, 1000);

但是,这个文件从 2015 年后,就没有修改过了:

那么,问题就出现在 setInterval 方法里。

于是,自己我便提取了相关的插件:chrome-59-show-setinterval-issue-code

而在这个方法里,关键点是:

chrome.devtools.inspectedWindow.eval(`jQuery.fn.jquery`, function(pageHasReact, err) {});

后来,发现有相当多的插件会使用这样的方式,来对检测是否含相应的环境,如:

  • Vue DevTools
  • React Dev Tools
  • Ember Inspector
  • 等等

在他们的代码里都有相似的 setInterval,如

const checkVueInterval =setInterval(createPanelIfHasVue, 1000)

然后 CPU 就~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

已向 Chrome 报 Bug 了:bugs.chromium.org/p/chr

 

你呢,遇到同样的问题吗?

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=30409
赞同 0
评论 0 条
prtyaaL3
粉丝 1 发表 2554 + 关注 私信
上周热门
Kingbase用户权限管理  2020
信刻全自动光盘摆渡系统  1749
信刻国产化智能光盘柜管理系统  1419
银河麒麟添加网络打印机时,出现“client-error-not-possible”错误提示  1013
银河麒麟打印带有图像的文档时出错  922
银河麒麟添加打印机时,出现“server-error-internal-error”  713
麒麟系统也能完整体验微信啦!  657
统信桌面专业版【如何查询系统安装时间】  631
统信操作系统各版本介绍  622
统信桌面专业版【全盘安装UOS系统】介绍  596
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

添加我为好友,拉您入交流群!

请使用微信扫一扫!