Chrome扩展程序Javascript仅在图标点击时运行

问题描述 投票:2回答:3

我希望我的Chrome扩展程序在用户访问网站时加载Javascript。但是目前,仅当用户单击扩展图标并且直到扩展弹出窗口打开时,才会执行Javascript。

我在这个Chrome extension to load the script without clicking on icon问题中看到了答案。

我的manifest.json是:

{
  "manifest_version": 2,

  "name": "Javascript example",
  "description": "Some description.",
  "version": "1.1",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "activeTab",
    "storage"
  ],
  "content_scripts": [
    {
      "matches": ["*://*/*"],
      "js": ["popup.js"]
    }
  ]
}

popup.js是:

document.addEventListener('DOMContentLoaded', () => {

  alert("Working");
});

popup.html是:

<!doctype html>
<html>
  <head>
    <title>Getting Started Extension's Popup</title>
    <script src="popup.js"></script>
  </head>
  <body>
  </body>
</html>

仅当我单击扩展图标(即运行popup.html时)时才显示警告对话框,而不是在页面加载时显示。我想要执行popup.js文件而无需用户单击扩展图标。我错过了什么?

javascript html google-chrome google-chrome-extension
3个回答
2
投票

你的清单工作,但run_at默认为document_idle,这意味着DOMContentLoaded已经解雇。这可以通过将run_at指定为document_start来修复。

{
  "manifest_version": 2,

  "name": "Javascript example",
  "description": "Some description.",
  "version": "1.1",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },

  "permissions": [
    "activeTab",
    "storage"
  ],
  "content_scripts": [
    {
      "matches": ["*://*/*"],
      "run_at": "document_start",
      "js": ["popup.js"]
    }
  ]
}

资料来源:https://developer.chrome.com/extensions/content_scripts


1
投票

您需要内容脚本。

内容脚本是在网页上下文中运行的JavaScript文件。通过使用标准文档对象模型(DOM),他们可以阅读浏览器访问的网页的详细信息,或对其进行更改。

以下是内容脚本可以执行的一些示例:

  • 在网页中查找未链接的URL并将其转换为超链接
  • 增加字体大小以使文本更清晰
  • 在DOM中查找和处理微格式数据

如果应始终注入内容脚本的代码,请使用content_scripts字段在扩展清单中注册它,如下例所示。

{
  "name": "My extension",
  ...
  "content_scripts": [
    {
      "matches": ["http://www.google.com/*"],
      "css": ["mystyles.css"],
      "js": ["jquery.js", "myscript.js"]
    }
  ],
  ...
}

有关更多信息和实施,请参阅this链接。


0
投票

您可以使用在页面上下文中运行的内容脚本,这样您就可以知道用户何时访问特定站点:https://developer.chrome.com/extensions/content_scripts

© www.soinside.com 2019 - 2024. All rights reserved.