我无法用“!重要”规则注入样式
我试图用这个代码注入一个样式:
document.body.style.color='green!important';
根据CSS级联引用 ,通过应用!important
规则,我可以胜过起源和特异性。
我试图用Firefox Firebug注入到www.google.com,但是没有运气。
如何用!important
规则注入前景色?
根据规范,如果你想设置优先级,而不仅仅是值,你必须使用setProperty
,如下所示:
document.body.style.setProperty ("color", "green", "important");
element.style.cssText = 'color:green !important';
应该为你工作。
只使用这个:
document.body.style.color="green";
你不必以这种方式使用重要的东西。 无论如何,致命指出,这不会工作,当直接重要的规则在CSS样式表中,你需要重写。
那样的话,你必须dynamic地创build样式表并在头部添加它:
function addNewStyle(newStyle) { var styleElement = document.getElementById('styles_js'); if (!styleElement) { styleElement = document.createElement('style'); styleElement.type = 'text/css'; styleElement.id = 'styles_js'; document.getElementsByTagName('head')[0].appendChild(styleElement); } styleElement.appendChild(document.createTextNode(newStyle)); }
然后你可以像这样更新风格
addNewStyle('body {color:green !important;}')
我想说的是,由于代码中的任何错误(空间除外),可能不会有太多的工作,但更多的是因为修改body标签不是一个足够具体的元素,类,或者你需要创build什么影响。
例如,search结果的页面文本有一个“st”类。 所有的search结果都被封装在一个<li>
标签中。
所以一些这样的代码可能看起来像这样:
var arr = document.getElementsByClassName('st'); for(i=0; i<arr.length; i++){ arr[i].style.color="green"; }
style.cssText是添加!important的唯一方法。
<script> document.body.style.cssText='color: red !important;' </script>
所有的答案是伟大的,但他们都假设属性的value
是fixed
,如果不是
看看我的解决scheme
this.style.setProperty("color", $(this).css('color'), "important");
而不是hand writing
价值,我得到它使用jquery $(this).css('attr')