当它适用于弹出页面时,无法从后台页面注入代码

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

我在manifest.json中有以下权限:

"permissions": [
  "*//*/*",
  "http://*/",
  "https://*/",
  "activeTab",
  "tabs",
  "storage",
  "bookmarks"
]

我仍然不能从背景页面executeScript,但不知何故它从弹出页面工作。我收到以下错误:

运行tabs.executeScript时未经检查的runtime.lastError:无法访问URL“https://github.com/NeilLi1992/LightMarker/blob/master/js/background.js”的内容。扩展清单必须请求访问此主机的权限。在chrome-extension://aciimkfhggbanpmpngahlofjocidjfko/src/js/background.js:152:29

我试图在权限部分硬编码https://github.com/,它仍然无法正常工作。


我在后台页面的DevTools中测试了这段代码:

chrome.tabs.executeScript(728, { code: "alert(123);" });

728就是我在创建选项卡时记录的tabId,因此它是有效的。

我从后台devtools得到了上述错误。但是当我从popup的devtools中做到这一点时,它工作正常。

google-chrome google-chrome-extension
3个回答
0
投票

正如您已经发现*//*/*是一个无效的跨源许可。请改用这样的东西。

  "permissions": [
    "https://*/*",
    "http://*/*",
    "tabs"
  ]

或提供较窄的权限范围。

  "permissions": [
    "https://*/*",
    "http://*/*",
    "activeTab"
  ]

有关程序化注射的进一步阅读:https://developer.chrome.com/extensions/content_scripts#pi


0
投票

请不要加载远程文件,请下载项目中的相关文件然后尝试执行它。

执行此操作后仍然无法正常工作请在manifest.json中的web_accessible_resources属性中添加文件引用以获取更多参考https://developer.chrome.com/extensions/manifest/web_accessible_resources


0
投票

谢谢你的其他答案。但它们似乎不起作用。

我试图提供相当多的许可,并且我多次阅读程序化注入页面,但仍然无法获得后台页面来执行代码。

最后我放弃了,转向内容脚本,无痛苦地工作。现在我从内容脚本打开一个端口,并与后台页面进行通信,为内容脚本准备必要的信息。

以防万一其他人在挣扎,content scripts似乎是你的救援。

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