我正在制作一个Chrome扩展程序,其中包括一个简单的弹出窗口页面,当您点击扩展图标时会出现该页面。此弹出窗口页面由一些简单的HTML、CSS和jQuery代码组成,没有什么花哨的东西。
JS代码似乎运行得很好,但是在外部显示器上与其交互时,CSS的悬停、过渡和动画效果非常卡顿(延迟长达5秒)。
其他所有方面都运行良好,我可以看到JavaScript正在按预期执行。只有上述提到的CSS渲染问题。
有趣的是,如果我将同一浏览器窗口拖到笔记本电脑的原生屏幕上,问题就消失了。一切都很顺畅。将同一窗口拖到我的2个外部显示器上,噼里啪啦!卡顿一个城市......
我已经在朋友的电脑上进行了测试,他遇到了同样的问题。在原生屏幕上运行良好,在外部显示器上卡顿。到目前为止,看起来这个问题只发生在Mac电脑上。通过排除法,我知道问题不是由显示器本身引起的,也与视频输入电缆无关。我只能在连接到我的Macbook Pro(2015年初)和朋友的Macbook Pro(2014年初)的外部显示器上观察到此错误。
我尝试过的事情(没有帮助):
- 通过Chrome设置禁用“硬件加速”
- 将Chrome还原为默认设置
- 监视系统性能(CPU和内存使用率都远低于极限)
- 监视Chrome任务管理器
- 在chrome://flags中切换各种设置
- 更换各种电缆(HTMI、DVI和VGA)
想知道是否有其他人遇到类似的问题?这个奇怪的外部显示器卡顿问题一直困扰着我整整一个星期,我已经没有任何想法了。
Github演示项目repo-> https://github.com/peachteaboba/chrome_extension_bug_demo
-------------------------更新-------------------------
我已经确定了错误的根本原因。显然,如果在manifest.json中包含background.js文件,则弹出窗口会卡顿。如果不包含背景脚本,则没有卡顿。
manifest.json(卡顿版本)
{
"manifest_version": 2,
"name": "Chrome Extension Bug Demo v2",
"description": "Chrome Extension Bug Demo v2",
"version": "2.00",
"author": "",
"browser_action": {
"default_icon": "images/bug.png",
"default_title": "Chrome Extension Bug Demo v2",
"default_popup": "popup.html"
},
"chrome_url_overrides": {},
"permissions": [
"storage",
"tabs"
],
"background": {
"scripts": [
"js/background.js"
]
},
"web_accessible_resources": [
"script.js"
],
"externally_connectable": {
"matches": [
"http://*/*",
"https://*/*"
],
"accept_tls_channel_id": true
}
}
清单文件(无卡顿版本)manifest.json
{
"manifest_version": 2,
"name": "Chrome Extension Bug Demo v2",
"description": "Chrome Extension Bug Demo v2",
"version": "2.00",
"author": "",
"browser_action": {
"default_icon": "images/bug.png",
"default_title": "Chrome Extension Bug Demo v2",
"default_popup": "popup.html"
},
"chrome_url_overrides": {},
"permissions": [
"storage",
"tabs"
],
"background": {
"scripts": [
]
},
"web_accessible_resources": [
"script.js"
],
"externally_connectable": {
"matches": [
"http://*/*",
"https://*/*"
],
"accept_tls_channel_id": true
}
}
唯一的更改是从后台脚本部分中删除“js/background.js”。 实际上,background.js 文件为空,因此即使包括此空脚本也会触发 Chrome bug。
针对此问题已在 Chromium 中开放了一个 bug 报告。 您可以通过此链接查看:https://bugs.chromium.org/p/chromium/issues/detail?id=971701