Chrome 插件卡顿问题处理

实际现象

相同问题
manifest.json 有 background 会卡顿
在这里插入图片描述
manifest.json 没有 background 正常不卡
在这里插入图片描述

问题具体描述

  1. manifest.json 配置中包含 background
  2. 插件在 Mac 的外接显示器上使用出现 css 渲染巨大延时导致卡顿(仅 css 渲染延时,dom 结构数据流均已正常改变)
  3. 拖拽到原生屏幕上没有问题

问题原因

  1. chromium 内核有 bug 具体原因不明
  2. issue 链接 链接不能访问的请看下图
    在这里插入图片描述

解决办法

  1. issue 截止 2021年2月20日已经存在将近21和月了,还没解决
  2. issue 的评论中有一个临时的解决办法如下(链接需要翻墙,无法访问的看下图)
    在这里插入图片描述

在这里插入图片描述

具体操作如下

popup 对应的 html 中添加下方 help.js 脚本

/**
 * Temporary workaround for secondary monitors on MacOS where redraws don't happen
 * @See https://bugs.chromium.org/p/chromium/issues/detail?id=971701
 */
 // help.js
if (
    window.screenLeft < 0 ||
    window.screenTop < 0 ||
    window.screenLeft > window.screen.width ||
    window.screenTop > window.screen.height
) {
    chrome.runtime.getPlatformInfo(function(info) {
        if (info.os === 'mac') {
            const fontFaceSheet = new CSSStyleSheet();
            fontFaceSheet.insertRule(`
              @keyframes redraw {
                0% {
                  opacity: 1;
                }
                100% {
                  opacity: .99;
                }
              }
            `);
            fontFaceSheet.insertRule(`
              html {
                animation: redraw 1s linear infinite;
              }
            `);
            document.adoptedStyleSheets = [...document.adoptedStyleSheets, fontFaceSheet];
        }
    });
}
<!-- popup 对应的 html -->
<!DOCTYPE html>
<html lang="en" style="height: auto;">
    <head>
        <meta charset="utf-8" />
        <script type="text/javascript" src="help.js" ></script>
        <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
        <title>ChromePlugin</title>
    </head>
    <body>
        <noscript>You need to enable JavaScript to run this app.</noscript>
        <div id="root"></div>
    </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值