【问题标题】:Remove all CSS rules删除所有 CSS 规则
【发布时间】: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 来完成此操作。

【问题讨论】:

    标签: javascript jquery css dojo arcgis-js-api


    【解决方案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&lt;a.length;h++){f=a[h];if(f.rel.toLowerCase().match(/stylesheet/)&amp;&amp;f.href){var g=f.href.replace(/(&amp;|\?)forceReload=\d+/,'');f.href=g+(g.match(/\?/)?'&amp;':'?')+'forceReload='+(new Date().valueOf())}}})()
    【解决方案2】:
    【解决方案3】:

    总是有document.head.innerHTML = ""; 但它真的清理了房子,所以你必须存储任何脚本、元标记、标题或任何你想保存的东西并再次添加它们。

    【讨论】:

      猜你喜欢
      • 2015-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      相关资源
      最近更新 更多