删除所有 CSS 规则
Posted
技术标签:
【中文标题】删除所有 CSS 规则【英文标题】:Remove all CSS rules 【发布时间】:2010-09-04 21:11:36 【问题描述】:有没有办法在加载样式表后清除所有 CSS 规则?
我必须使用构建在 Dojo 之上的专有 javascript 库 (ESRI's ArcGIS Server API)。我广泛使用 Dojo 的小部件,并希望使用 Dojo 的 claro 主题,但不幸的是,ESRI 库通过加载非现场 CSS 文件(并且可能是在 JS 中硬编码的 CSS 规则)来修改 CSS。这最终破坏了 Claro 主题。
如此多的 Dojo 小部件 CSS 类被重写并创建了新规则,仅清除所有 CSS 并重新加载标准 Dojo 样式表似乎更容易/更安全。
类似以下的内容会很好:
* none
但我认为我最终必须使用 Dojo 或 jQuery 来完成此操作。
【问题讨论】:
【参考方案1】:查看 Paul Irish 的 RefreshCSS 小书签:
javascript:(function()var h,a,f;a=document.getElementsByTagName('link');for(h=0;h<a.length;h++)f=a[h];if(f.rel.toLowerCase().match(/stylesheet/)&&f.href)var g=f.href.replace(/(&|%5C?)forceReload=\d+/,'');f.href=g+(g.match(/\?/)?'&':'?')+'forceReload='+(new Date().valueOf()))()
它刷新页面上的 CSS 样式表,而不刷新页面本身。
我认为你可以对它进行一些改动,让它做你想做的事?
使用 jQuery 的另一种可能可行的方法是在页面加载后运行它:
$('head link, head style').remove();
【讨论】:
我不知道为什么,但是在您的代码中有一些转义字符,例如 <和&.这是(希望格式正确)代码:javascript:(function()var h,a,f;a=document.getElementsByTagName('link');for(h=0;h<a.length;h++)f=a[h];if(f.rel.toLowerCase().match(/stylesheet/)&&f.href)var g=f.href.replace(/(&|\?)forceReload=\d+/,'');f.href=g+(g.match(/\?/)?'&':'?')+'forceReload='+(new Date().valueOf()))()
【参考方案2】:
不。可悲的是,这样的事情并不存在。
这些相关问题的答案大致概括了解决方法方面的可能性。
Is there a way to “sandbox” an html block away from its page's CSS without using iframes?
Reset CSS for a certain area of the page?
prevent meyer reset css to mess with dynamic content
How to reset css in middle of html document ?
【讨论】:
【参考方案3】:总是有document.head.innerHTML = "";
但它真的清理了房子,所以你必须存储任何脚本、元标记、标题或任何你想保存的东西并再次添加它们。
【讨论】:
以上是关于删除所有 CSS 规则的主要内容,如果未能解决你的问题,请参考以下文章
获取代码中使用的所有 CSS 类选择器,这些选择器没有定义 CSS 规则集 [关闭]
获取 Google Chrome 开发工具中选定元素的所有 CSS 规则