javascript - 无法通过 Chrome 扩展程序注入(inject) CSS

标签 javascript css google-chrome-extension

我正在尝试创建一个 Chrome 扩展程序,它会在单击“扩展程序”按钮时将 CSS 注入(inject)页面。

弹出窗口加载正常,但无法注入(inject) CSS。

list .json:

{
  "name": "Flat Firemem",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Arranges the page properly in the dump.",
  "browser_action": {
    "default_icon": "logo.png",
    "default_popup": "popup.html"
  },
  "permissions": ["tabs", "<all_urls>", "file:///*"]
}

popup.html

<!DOCTYPE html>
<html style=''>
<head>
<script src='tester.js'></script>
</head>
<body style="width:400px; border: 2px solid black;background-color:LightGray;">
<div id='message'>Hello..!!</div>
</body>
</html>

样式.css

*
{
    float: none !important;
    position: static !important;
}

table, tbody, td, tfoot, th, thead, tr
{
    display: block !important;
}

tester.js:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(null,
                           {file:"style.css"});
});

如果有人能找出问题所在,那将会很有帮助。

最佳答案

使用 chrome.tabs.insertCSS 相反,就这么简单。请注意,选项卡 ID 是可选的:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.insertCSS({file:"style.css"});
});

哦。此外,您需要对 chrome.browserAction.onClicked 使用弹出窗口或监听器。 . 您不能同时使用两者,因为在定义弹出窗口时不会触发事件。

两种可能的解决方案:

  1. 您的代码应该进入后台:

    {
      "name": "Flat Firemem",
      "version": "1.0",
      "manifest_version": 2,
      "description": "Arranges the page properly in the dump.",
      "browser_action": {
        "default_icon": "logo.png",
      },
      "background": {
        "scripts": ["tester.js"]
      },
      "permissions": ["tabs", "<all_urls>", "file:///*"]
    }
    
  2. 或者,您只需在出现弹出窗口时调用代码:

    // tester.js: no need to listen to event
    chrome.tabs.insertCSS({file:"style.css"});
    

注意:您的权限对于这项任务来说有点过高。查看 activeTab permission ,还要注意 <all_urls>权限包括 file:///网址。

关于javascript - 无法通过 Chrome 扩展程序注入(inject) CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23239145/

相关文章:

javascript - Angular 4 禁用的 FormControl 不会检查或显示验证错误

javascript - 如何使选项元素只读但不禁用选择元素

twitter-bootstrap - :before pseudo-element when there is one class but NOT another class 的 CSS 选择器

javascript - 删除 BrowserAction onClicked 监听器

javascript - 检测是否安装了 Chrome 扩展

php 为多个项目输出 javascript

javascript - jQueryUI Datepicker 不接受不同的日期格式

css - 更改在angularjs中未选中的已选中行的背景颜色

google-chrome - Chrome扩展程序如何在浏览器启动时获得回调?

javascript - 如何使用 JavaScript 更改当前页面导航按钮/链接的背景颜色?