首页  >  文章  >  web前端  >  如何在 Chrome 扩展的 JavaScript 中将 CSS 样式表作为字符串注入?

如何在 Chrome 扩展的 JavaScript 中将 CSS 样式表作为字符串注入?

DDD
DDD原创
2024-11-02 20:58:02922浏览

How to Inject CSS Stylesheets as Strings in JavaScript for Chrome Extensions?

在 JavaScript 中将 CSS 样式表作为字符串注入

要将自定义 CSS 样式添加到 Chrome 扩展程序的界面,我们面临着 document.stylesheets 的挑战。以下是如何使用 JavaScript 字符串注入完整的样式表:

创建并附加样式元素:

最简单的解决方案是创建一个

<code class="javascript">const style = document.createElement('style');
style.textContent = 'body { color: red; }';
document.head.append(style);</code>

多个 CSS 注入:

如果需要要在一次传递中注入多种样式,您可以将上述代码包装在实用函数中:

<code class="javascript">function addStyle(styleString) {
  const style = document.createElement('style');
  style.textContent = styleString;
  document.head.append(style);
}</code>

可替换 CSS 注入:

或者,您可以修改函数覆盖以前的 CSS 注入:

<code class="javascript">const addStyle = (() => {
  const style = document.createElement('style');
  document.head.append(style);
  return (styleString) => (style.textContent = styleString);
})();</code>

IE 限制:

请注意,IE9 及以下版本限制为 32 个样式表,而 IE10 允许 4095 个。请谨慎在旧版浏览器中使用不可替换的代码时。

现代化答案:

出于安全原因,最近更新已将 .innerHTML 替换为 .textContent。更新后的代码:

<code class="javascript">const style = document.createElement('style');
style.textContent = styleString;
document.head.append(style);</code>

以上是如何在 Chrome 扩展的 JavaScript 中将 CSS 样式表作为字符串注入?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn