扩展内容脚本仅打开关于:空白
Extension content script only opening about:blank
我的chrome扩展内容脚本中有以下代码:
window.open(chrome.extension.getURL("options.html"),'_blank');
但每当我尝试这样做时,我都会得到一个新的选项卡,其中包含大约:空白,而不是我的选项页。
当我在选项页上运行相同的代码(通过开发人员工具控制台)时,它可以正常工作。如果我启动一个文本为chrome.extension.getURL("options.html")
的警报,它将按预期工作。
这个chrome文档页面表明我所做的工作应该是正确的。那么,我该如何着手解决这个问题呢?
编辑:
我认为这与内容安全策略有关。
- 如果我插入一个链接到页面,然后点击它,我会得到:空白
- 如果我插入一个链接并右键单击,然后在新的选项卡/窗口中打开或复制URL,它就可以正常工作
- 如果我注入重定向,我会被重定向到about:black
- 如果我在任何地方插入URL的文本,它都可以正常工作
- 如果我从ANY非扩展页面注入确切的URL(没有chrome.extension.getURL等),它就不起作用
所以我想我的新(更一般的)问题是,我如何从内容脚本启动我的选项页面
为了能够在扩展上下文之外(例如在网页中)使用HTML文件(或任何其他资源),您需要在清单的web_accessible_resources
部分添加目标HTML文件。例如:
扩展文件结构:
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);
manifest.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"]
}
相关文章:
- 如何删除多行HTML排列中的空白
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 不同浏览器中的空白字符正则表达式行为
- Javascript中的空白是什么
- Facebook共享显示一个接一个的空白页面
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- AngularJS ng开关或类似的动态值工作
- 基于下拉菜单创建开关
- 从字符串末尾删除空白无效
- Javascript开关不工作
- AngularJS ng选项在选择一个选项后删除了默认的空白值
- 当读取文件时,浏览器打开良好,但它是空白浏览器
- 引导开关不工作
- 带有显示XML数据的HTML的空白页
- 如何排除此正则表达式中的空白匹配项
- 如何定义星期日和平日.按日期使用开关
- 删除LINES开头和结尾的空白
- 尝试使用ng重复时出现空白屏幕
- ajax给出空白响应
- IE 9压缩XML DOM中的空白空间