链接到与 Greasemonkey JavaScript 位于同一目录中的 CSS 文件的正确语法是什么?我尝试了以下方法,但不起作用:
var cssNode = document.createElement('link');
cssNode.type = 'text/css';
cssNode.rel = 'stylesheet';
cssNode.href = 'example.css';
cssNode.media = 'screen';
cssNode.title = 'dynamicLoadedSheet';
document.getElementsByTagName("head")[0].appendChild(cssNode);
如果我能让它工作,它会比在 JavaScript 中封装 CSS 更改容易得多。
答案1
使用@resource
指令很容易。如下所示:
// ==UserScript==
// @name _Use external CSS file
// @resource YOUR_CSS YOUR_CSS_File.css
// @grant GM_addStyle
// @grant GM_getResourceText
// ==/UserScript==
var cssTxt = GM_getResourceText ("YOUR_CSS");
GM_addStyle (cssTxt);
没有路径/url 信息,@resource
在同一目录中查找“YOUR_CSS_File.css”。
答案2
我仍然无法让本地 CSS 文件正常工作。不过,我偶然发现了这个技巧(有效),它更接近我想要的效果:
GM_addStyle((<><![CDATA[
body { color: white; background-color: black }
img { border: 0 }
.footer {width:875px;}
]]></>).toString());
谢谢艾里克·沃尔德。
答案3
尝试这个!
function addStyleSheet(style){
var getHead = document.getElementsByTagName("HEAD")[0];
var cssNode = window.document.createElement( 'style' );
var elementStyle= getHead.appendChild(cssNode)
elementStyle.innerHTML = style;
return elementStyle;
}
addStyleSheet('@import "example.css";');
注意:为了使此示例正常工作,example.css 必须与用户脚本位于同一目录中。
参考资料->深入GreaseMonkey
答案4
您需要将样式表传递给 addStyleSheet 函数,否则它将不起作用。
function addStyleSheet(style){
var getHead = document.getElementsByTagName("HEAD")[0];
var cssNode = window.document.createElement( 'style' );
var elementStyle= getHead.appendChild(cssNode);
elementStyle.innerHTML = style;
return elementStyle;
}
addStyleSheet('@import "http://wherever.com/style.css";');
要使用本地文件,请将最后一行更改为:
addStyleSheet('@import "style.css";');
这将在与脚本相同的目录中加载 style.css。