javascript - 如何在manifyst v3中使用新的insertCSS和removeCSS

标签 javascript css manifest chrome-extension-manifest-v3

如何使用manifyst v3中新的insertCSS和removeCSS? 这些文档对我没有帮助,也没有给出一些例子。

我有一个 CSS 文件,我想将其注入(inject)页面中并将其删除

代码是这样的:

背景.js

document.getElementById('chat').addEventListener('change', (e) => {
  var chat = e.path[0].value;
  // inject css file
  let css = document.createElement('link');
  css.rel = 'stylesheet';
  css.type = 'text/css';
  css.href = 'css/chat-rtl.css';

  if (chat == 'rtl') {
    chrome.scripting.insertCSS({ injection: { css } }); // i know it is wrong syntax
    console.log('rtl');
  } else {
    chrome.scripting.removeCSS({ injection: { css } }); // i know it is wrong syntax
    console.log('ltr');
  }
});

错误日志:

Uncaught TypeError: Error in invocation of scripting.removeCSS(scripting.CSSInjection injection, optional function callback): Error at parameter 'injection': Unexpected property: 'injection'. at HTMLSelectElement. (background.js:10:22)

最佳答案

我解决了!

使用 insertCSS 的正确语法是:

chrome.scripting.insertCSS({
  target: { tabId: tab.id },
  files: ['css/chat-rtl.css'],
});

并获取tab使函数异步函数并使用:

const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });

代码

document.getElementById('chat').addEventListener('change', async (e) => {
  var chat = e.path[0].value;
  // inject css file

  const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });

  if (chat == 'rtl') {
    chrome.scripting.insertCSS({
      target: { tabId: tab.id },
      files: ['css/chat-rtl.css'],
    });
    console.log('rtl');
  } else {
    chrome.scripting.removeCSS({
      target: { tabId: tab.id },
      files: ['css/chat-ltr.css'],
    });
    console.log('ltr');
  }
});

关于javascript - 如何在manifyst v3中使用新的insertCSS和removeCSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71115113/

相关文章:

javascript - HTML页面打印

html - 自定义滚动条但一直消失的效果

html5中的CSS动画背景图像问题

java - 执行java jar文件时主线程出现异常

python - 如何在 PyPI 中包含非 .py 文件?

c++ - 如何为 MFC .EXE 指定 .DLL 搜索路径?

javascript - 重叠选项卡/下拉 div - 链接不起作用 - CSS 或 JS 问题?

javascript - 将时间添加到日期值

javascript - Flow 中的可迭代类

javascript - 移动图像以及 TD 或 DIV 内的滚动