TamperMonkey中的GM_addStyle等效物

对于添加CSS,是否有一种与GreaseMonkey的GM_addStyle方法相当的方法

在GreaseMonkey中,您可以向多个元素添加一组CSS属性,如下所示:

GM_addStyle(“主体{颜色:白色;背景色:黑色;}img{边框:0;}”);

要在TamperMonkey中执行等效操作,我目前必须执行以下操作:

函数addGlobalStyle(css){
var头、样式;
head=document.getElementsByTagName(’head’)[0];
如果(!head){return;}
style=document.createElement(’style’);
style.type=’text/css’;
style.innerHTML=css;
头。附属物(样式);
}
addGlobalStyle(’主体{颜色:白色;背景颜色:黑色;}’);

这是可行的,但是是否有一个内置的GM_addStyle等效的TamperMonkey,使我不必在每个脚本上重复这一点

版本4.0或+,2018年更新

引用错误:未定义GM_addStyle

您需要创建自己的GM_addStyle函数,如下所示:

/==UserScript==
//@name示例
//@description userscript和GM_addStyle方法。
//==/UserScript==
函数GM_addStyle(css){
const style=document.getElementById(“GM_addStyleBy8626”)| |(函数(){
const style=document.createElement('style');
style.type='text/css';
style.id=“GM_addStyleBy8626”;
document.head.appendChild(样式);
回归风格;
})();
const sheet=style.sheet;
sheet.insertRule(css,(sheet.rules | | | sheet.cssRules | |[])长度);
}
//演示:
GM_addStyle(“p{color:red;}”);
GM_addStyle(“p{文本装饰:下划线;}”);
document.body.innerHTML=“<p>我使用了GM\U addStyle</p><pre></pre>”;
const sheet=document.getElementById(“GM_addStyleBy8626”).sheet,
规则=(sheet.rules | | sheet.cssRules);
for(设i=0;i<rules.length;i++)
document.querySelector(“pre”).innerHTML+=规则[i].cssText+“\n”

不赞成

如果GM\u addStyle(…)不起作用,请检查是否有@grant GM\u addStyle标题

像这样:

/==UserScript==
//@name示例
//@description请参阅带有授权标头的UserScript。
//@grant GM_addStyle
//==/UserScript==
GM_addStyle(“主体{颜色:白色;背景色:黑色;}img{边框:0;}”);

发表评论