Met*_*ger 13 javascript css firefox greasemonkey stylesheet
我正在使用Greasemonkey并尝试在特定域中添加规则.但它导致错误说The operation is insecure.
该代码在Chrome上正常运行.
该脚本运行http://mydomain.com/test/test.php
并且CSS文件是http://cdn.mydomain.com/test/css/global.css
我的功能:
function css(selector, property, value) {
for (var i=0; i<document.styleSheets.length;i++)
{
try
{
document.styleSheets[i].insertRule(selector+ ' {'+property+':'+value+'}', document.styleSheets[i].cssRules.length);
}
catch(err)
{
try // IE
{
document.styleSheets[i].addRule(selector, property+':'+value);
}
catch(err) {}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在谷歌上我发现可能是因为我试图访问跨域,所以我尝试将CSS文件的URL添加到"接受的URL"但没有结果.
我该如何解决?
我发现这个解决方案可以解决这个问题:
var style = document.createElement("style");
document.head.appendChild(style);
style.sheet.insertRule("body { font-size:40px; }", 0);
Run Code Online (Sandbox Code Playgroud)
是的,Firefox 会阻止对跨域样式表的访问。它可以(或至少用来)抛出异常:
“访问受限 URI 被拒绝”代码:“1012”
nsresult:“0x805303f4(NS_ERROR_DOM_BAD_URI)”
位置:……
但是,使用 CSS,您无需向特定样式表添加规则。只需覆盖您关心的样式即可。
例如,如果页面设置:
body {
background: white;
}
Run Code Online (Sandbox Code Playgroud)
你的脚本设置:
body {
background: red;
}
Run Code Online (Sandbox Code Playgroud)
然后页面将变成红色(名义上)。
有关更改目标页面样式的最简单、最明智的方法,请参阅以前的答案,例如这个。
| 归档时间: |
|
| 查看次数: |
4982 次 |
| 最近记录: |