Javascript chrome扩展背景&x2B;导致笔记本电脑过热的内容脚本
我有一个chrome扩展,它会让用户的笔记本电脑慢到爬行的速度,并且会占用大量CPU(或者至少会让他们的风扇发疯) 我想知道我怎样才能描述这个,或者看看发生了什么 一些有助于指导的理论:Javascript chrome扩展背景&x2B;导致笔记本电脑过热的内容脚本,javascript,google-chrome,google-chrome-extension,content-script,Javascript,Google Chrome,Google Chrome Extension,Content Script,我有一个chrome扩展,它会让用户的笔记本电脑慢到爬行的速度,并且会占用大量CPU(或者至少会让他们的风扇发疯) 我想知道我怎样才能描述这个,或者看看发生了什么 一些有助于指导的理论: 扩展需要(不幸地)进行一些轮询。我不想解释为什么会这样,但请相信我 然而,最终的结果是: setTimeout(function() { // our inner scrolling loop scrollingTimerId = setInterval(function() {
setTimeout(function() {
// our inner scrolling loop
scrollingTimerId = setInterval(function() {
// did the user change the URL?
if (!isModalUrl(window.location.href)) {
clearInterval(scrollingTimerId);
}
// scroll!
doScroll();
}, SCROLL_DELAY);
// our loop to check if we're done
isDoneTimerId = setInterval(function() {
...
}, OTHER_DELAY);
}, TIMEOUT_DELAY);
可能是取消setInterval
失败,或者是导致使用率随时间增加的原因
试图找出可能存在的性能问题,以及在何处查找。在Chrome dev tools inspector中,也许有一个我不知道的好工具?太少的细节,看不出你的问题是什么。顺便说一句:为什么需要在那里包装
setTimeout
?扩展处理的页面非常具有对抗性,并且会更改加载到DOM中时调用的元素。而且大多数元素都是通过JS加载的,所以“页面就绪”类型的东西不起作用。外部设置超时是等待页面准备就绪。它很粗糙,但比“聪明”的方法更有效。这是否会导致显著的性能开销?仍不清楚。您已经发布了一般短语和一些伪代码,真的希望有人能帮助您解决问题吗?外部设置超时是等待页面准备就绪。窗口
的加载
事件有什么问题?在伪代码中有两件事很明显:A)您没有阻止多个间隔计时器开始执行相同的操作(这是一个典型的问题,可能会导致您的问题)。B) 没有什么能阻止间歇永远持续下去。虽然这可能没问题,但限制代码等待特定事件发生的时间几乎总是一个好主意。通常,经过一段时间后,很可能你没有发现你在寻找什么,或者事情永远不会发生,也许是用户的选择。