使用 JavaScript 在运行时编辑 CSS(更改选择器):防止在 DIV 内应用

Editing CSS (changing selectors) at runtime with JavaScript: prevent application inside DIV

我希望能够阻止 CSS 文件应用于 DIV 标签的内部。

CSS 文件包含在 HTML 文档的 <head> 部分中。我无法删除文件或更改它。我所能控制的只是 DIV 标签的内部。 HTML 文档是用 MediaWiki 生成的,所以我不允许使用 iFrame。我无法在其他任何地方托管我的内容,但我可以获取 CSS 和 javascript 等外部资源,上传它们,并将它们包含在我的 DIV.

内部

目前,我有 Jquery,我可以包含各种外部库。

使用 jQuery 找到 <link rel="stylesheet" href=...> 然后 .remove() 确实有效,但这会弄乱页面的其余部分,我被很多人阻止了繁文缛节。

有没有办法 "javascriptically" 对样式表做一些事情,使其仅适用于不在我的 DIV 中的任何内容?也许使用 :not() 选择器?

我不知道,而且我以前从未接触过 not 选择器。请帮忙。谢谢。

您无法阻止 CSS 应用于文档的一部分,即使您可以更改它(只要您不关心,Javascript 是可行的没有 Javascript) 的用户。基本上你有两个选择:

  • 覆盖 CSS。可能最不痛苦的方法是采用一些 CSS reset 样式表并为每个规则添加前缀,以便 #1 它仅适用于您的 div,#2 它具有足够高的特异性以覆盖所有 MediaWiki 规则。然后您可以在其上应用您自己的样式。
  • 使 div 不是文档的一部分。您可以在 Javascript 中创建一个 iframe,然后将 DIV 的内容移到那里。 (Shadow DOM 会是一个更好的方法,但还没有太多的浏览器支持。)