Tuy*_*ham 63 html javascript tabs google-chrome google-chrome-extension
在我的Stackoverflow文件夹中,我有stackoverflow.ico2个波纹管文件.将其导入Chrome时,它会在地址栏中显示图标,但当我点击它时,Chrome不会打开任何新标签.我究竟做错了什么?
的manifest.json
{
"name": "Stackoverflow",
"version": "1",
"browser_action":
{
"default_icon": "stackoverflow.ico"
},
"background":
{
"page": "index.html"
},
"permissions": ["tabs"],
"manifest_version": 2
}
Run Code Online (Sandbox Code Playgroud)
的index.html
<html>
<head>
<script>
chrome.browserAction.onClicked.addListener(function(activeTab)
{
var newURL = "http://stackoverflow.com/";
chrome.tabs.create({ url: newURL });
});
</script>
</head>
</html>
Run Code Online (Sandbox Code Playgroud)
Bea*_*ist 96
问题是您违反了清单版本2content security policy.要修复它,你所要做的就是摆脱内联脚本,在这种情况下是你的背景page.把它变成这样的背景script:
的manifest.json
"background":{
"scripts": ["background.js"]
},
Run Code Online (Sandbox Code Playgroud)
background.js
chrome.browserAction.onClicked.addListener(function(activeTab){
var newURL = "http://stackoverflow.com/";
chrome.tabs.create({ url: newURL });
});
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因,您确实需要它作为页面,那么只需将脚本作为外部文件包含,并将其声明为与之前类似的页面.
ego*_*ego 24
在我的情况下,当我单击扩展弹出窗口中的链接时,我需要在新选项卡中打开链接,target属性设置为_blank:
<a href="http://www.example.com" target="_blank">Example</a>
Run Code Online (Sandbox Code Playgroud)
我更喜欢更简单的解决方案- 只需向 onclick 添加操作
$('body').on('click', 'a[target="_blank"]', function(e){
e.preventDefault();
chrome.tabs.create({url: $(this).prop('href'), active: false});
return false;
});
Run Code Online (Sandbox Code Playgroud)
这将在新选项卡中打开所有具有 target="_blank" 属性的链接(甚至是动态创建的链接),而不会失去弹出焦点。