gpt4 book ai didi

javascript - 扩展内容脚本仅打开约 :blank

转载 作者:行者123 更新时间:2023-11-30 12:52:59 32 4
gpt4 key购买 nike

我的 chrome 扩展内容脚本中有以下代码:

window.open(chrome.extension.getURL("options.html"),'_blank');

但是每当我尝试这个时,我只会得到一个带有 about:blank 的新标签,而不是带有我的选项页面的标签。

当我在选项页面上运行相同的代码(通过开发人员工具控制台)时,它可以正常工作。如果我使用文本 chrome.extension.getURL("options.html") 启动警报,它会按预期工作。

This chrome documentation page建议我正在做的事情应该正常工作。那么,我应该如何着手解决这个问题?

编辑:

我认为这与内容安全策略有关。

  • 如果我插入一个指向该页面的链接并单击它,我会得到 about:blank
  • 如果我插入一个链接并右击,然后在新标签页/窗口中打开或复制 URL,它会正常工作。
  • 如果我注入(inject)重定向,我将被重定向到 about:blank
  • 如果我在任何地方插入 URL 的文本,它工作正常。
  • 如果我从任何非扩展页面注入(inject)准确的 URL(没有 chrome.extension.getURL 等),它就不起作用。

所以我想我的新(更一般的)问题是,如何从内容脚本启动我的选项页面?

最佳答案

为了能够在扩展上下文之外(例如在网页中)使用您的 HTML 文件(或任何其他资源),您需要在 web_accessible_resources 中添加目标 HTML 文件 list 的一部分。例如:

扩展文件结构:

          root-dir/
|_____manifest.json
|_____content.js
|_____options.html

content.js:

/* Append a link to the web-page's body */
var a = document.createElement("a");
a.href = chrome.extension.getURL("options.html");
a.target = "_blank";
a.textContent = "My HTML file";
document.body.appendChild(a);

list .json:

{
"manifest_version": 2,
"name": "Test Extension",
"version": "0.0",
"offline_enabled": true,

"content_scripts": [{
"matches": ["*://*/*"],
"js": ["content.js"],
"run_at": "document_end",
"all_frames": false
}],

"web_accessible_resources": ["options.html"]
}

关于javascript - 扩展内容脚本仅打开约 :blank,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20296961/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com