Chrome扩展程序:每个标签一次插入CSS

时间:2019-05-07 10:08:49

标签: google-chrome-extension

我的扩展程序具有一个按钮,该按钮会插入带有insertCSS的样式表。当他们再次按下按钮时,它将再次注入,从而导致重新绘制。我该如何最好地防止这种情况发生?

我当前的解决方案:在后台脚本中保留一个数组,其中每个插入CSS的tabId都应包含在内。卸载选项卡时,我从数组中删除了tabId。工作正常,但似乎这可能更简单。例如。 window.insertedCSS = true,但是从后台脚本执行此操作会影响所有标签。

1 个答案:

答案 0 :(得分:0)

您可以使用内容脚本在实际注入CSS之前检查CSS是否已经注入,例如:

function myButtonClicked(){
    chrome.tabs.executeScript({code:`
        (function(){
            if (window.insertCSS === true) return false; //if already inserted return false;
            window.insertCSS = true;            //if not, set the page's variable and return it
            return true;
        })();
    `}, function (result) {
        if (result[0]) {  //if CSS was not inserted, insert it.
           chrome.tabs.insertCSS({file:'myCSS.css'});
        }
    });
}