【问题标题】:Extension loading a content script triggers a warning when published to the chrome web store加载内容脚本的扩展在发布到 chrome 网上商店时会触发警告
【发布时间】:2019-11-06 10:26:40
【问题描述】:

我想将我的 Chrome 扩展程序的脚本拆分成几个文件。为此,据我了解,我需要在清单文件中添加一个“content_scripts”属性。当我发布到 Chrome 网上应用店时,我收到一条警告消息,提示我的扩展程序需要大量权限,并且审查扩展程序需要更多时间,我最好采取不同的方式。

最初,我只有一个包含数据和函数的 js 文件。我不喜欢这样,所以我想为数据和函数提供单独的 js 文件。所以我把数据放到一个新的 data.js 文件中,我发现让它工作的唯一方法是在清单文件中有一个“content_script”属性。

"content_scripts": [
    {
        "matches": ["<all_urls>"],
        "js": ["data.js"]
    }
],

“matches”属性似乎是必需的。我的理解是,这个 值会导致 Chrome 商店警告我这是过多的权限。他们建议我改用 "permissions": ["activeTab"] 。但我已经在我的清单中找到了。所以我对如何在不需要额外权限的情况下添加内容脚本有点困惑,因为它只是另一个嵌入式 js 文件,我不明白为什么这需要比原始背景 javascript 文件更多的权限。

【问题讨论】:

  • 需要一个内容脚本来访问/修改网页的 DOM。如果您不需要,请不要使用内容脚本。 &lt;all_urls&gt; 也意味着你的内容脚本的一个实例在每个网页上运行,所以你应该只在你真的需要它时才使用它。根据您的扩​​展究竟做什么,可能会有不同的实现方式。文件本身的分离在这里是不相关的,因为扩展由严格定义的部分组成,每个部分都旨在服务于特定目标,如该部分的文档中所述。
  • 谢谢@wOxxOm。访问和修改网页的 DOM 是我的扩展程序所做的。它仅在用户单击扩展图标时按需执行。实际上,我只需一个后台脚本就可以实现它。分离脚本对我来说更多是出于实际目的,所以我知道我在 content_scripts 上走错了方向。我想我已经找到了解决问题的方法,所以我会在这里发布。
  • 如果使用 chrome.tabs.executeScript 注入,则无需在 manifest.json 中声明内容脚本。

标签: google-chrome-extension


【解决方案1】:

最后,我通过从后台脚本中引用几个单独的 js 文件来管理它们:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(tab.id, {file:"script1.js"});
  chrome.tabs.executeScript(tab.id, {file:"script2.js"});
});

它工作正常,不会导致 Chrome 网上应用店提示权限警告。所以对于我打算做的事情来说,这似乎是一个更好的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多