Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript chrome扩展背景&x2B;导致笔记本电脑过热的内容脚本_Javascript_Google Chrome_Google Chrome Extension_Content Script - Fatal编程技术网

Javascript chrome扩展背景&x2B;导致笔记本电脑过热的内容脚本

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() {

我有一个chrome扩展,它会让用户的笔记本电脑慢到爬行的速度,并且会占用大量CPU(或者至少会让他们的风扇发疯)

我想知道我怎样才能描述这个,或者看看发生了什么

一些有助于指导的理论:

  • 扩展需要(不幸地)进行一些轮询。我不想解释为什么会这样,但请相信我 然而,最终的结果是:

    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窗口打开时的问题吗

  • 试图找出可能存在的性能问题,以及在何处查找。在Chrome dev tools inspector中,也许有一个我不知道的好工具?

    太少的细节,看不出你的问题是什么。顺便说一句:为什么需要在那里包装
    setTimeout
    ?扩展处理的页面非常具有对抗性,并且会更改加载到DOM中时调用的元素。而且大多数元素都是通过JS加载的,所以“页面就绪”类型的东西不起作用。外部设置超时是等待页面准备就绪。它很粗糙,但比“聪明”的方法更有效。这是否会导致显著的性能开销?仍不清楚。您已经发布了一般短语和一些伪代码,真的希望有人能帮助您解决问题吗?外部设置超时是等待页面准备就绪。
    窗口
    加载
    事件有什么问题?在伪代码中有两件事很明显:A)您没有阻止多个间隔计时器开始执行相同的操作(这是一个典型的问题,可能会导致您的问题)。B) 没有什么能阻止间歇永远持续下去。虽然这可能没问题,但限制代码等待特定事件发生的时间几乎总是一个好主意。通常,经过一段时间后,很可能你没有发现你在寻找什么,或者事情永远不会发生,也许是用户的选择。