Firefox和IE可以't修改cssRules
Firefox and IE can't modify cssRules
我需要更改现有的全局CSS规则,然后访问文档。styleSheets,获取我的规则并对其进行修改。
我通过访问selectorText属性来修改选择器。
CSS代码
<style type="text/css">
.class {
color: #230020;
}
</style>
JavaScript代码
var rule = document.styleSheets[0].cssRules[0]; // obtain the first rule.
/* Chrome, Opera, Safari */
rule.selectorText; // returns ".class"
rule.selectorText = ".another-class";
rule.selectorText; // returns ".another-class", then it works and the rule changed.
我的问题是,在所有版本的Firefox和Internet Explorer中,属性selectorText似乎都是只读的。
/* Internet Explorer, Edge, and Firefox */
rule.selectorText; // returns ".class"
rule.selectorText = ".another-class";
rule.selectorText; // returns ".class", It remains as it was.
如何使其在Mozilla Firefox、Microsoft Internet Explorer和Edge上运行?
根据MDN,selectorText
是只读的:
CSSRule.selectorText属性获取规则集选择器的文本表示形式。这是以只读方式实现的;要动态设置样式表规则,请参阅使用动态样式信息。
不幸的是,似乎没有一种跨浏览器的方式来更改CSS规则的选择器。如果这是你的目标,你可以尝试删除整个规则,并使用相同的规则索引将其替换为新规则,你只需要将所有规则属性与选择器一起包括,如下所示:
var cssText = document.styleSheets[1].cssRules[0].style.cssText;
document.styleSheets[0].deleteRule(0);
document.styleSheets[0].insertRule('.another-class { ' + cssText + ' }', 0);
适用于Firefox和其他浏览器。请参见插入规则()和删除规则()。
相关文章:
- 在Safari执行javascript之前对其进行修改
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 用Javascript修改内部标记的CSS规则
- 绑定Range输入以修改样式
- 可以从Chrome扩展修改窗口对象吗
- jQuery滚动器插件修改
- 将函数从onclick修改为onload
- jQuery UI自动完成-修改问题
- Javascript日期修改
- 如何通过JQuery修改样式属性
- 使用treewalker修改表
- Angularjs:修改js中的作用域,稍后在页面中使用
- 在编译阶段后创建新的DOM树,或者继续使用原始修改的DOM
- 修改控制器AngularJS的全局值
- 修改数据后,setState不会触发重新渲染
- 通过sdk/system/events在修改请求观测器上测试http
- GWT:有没有一种方法可以修改GWT在编译中使用的Cast.java文件
- 在多个元素上使用jquery插件,只需稍作修改
- 为什么我从浏览器修改html/js时会多次发送ajax请求
- Firefox和IE可以't修改cssRules