我的扩展程序具有一个按钮,该按钮会插入带有insertCSS
的样式表。当他们再次按下按钮时,它将再次注入,从而导致重新绘制。我该如何最好地防止这种情况发生?
我当前的解决方案:在后台脚本中保留一个数组,其中每个插入CSS的tabId都应包含在内。卸载选项卡时,我从数组中删除了tabId。工作正常,但似乎这可能更简单。例如。 window.insertedCSS = true
,但是从后台脚本执行此操作会影响所有标签。
答案 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'});
}
});
}