Chrome 扩展程序:如何在新标签页中打开链接?
Posted
技术标签:
【中文标题】Chrome 扩展程序:如何在新标签页中打开链接?【英文标题】:Chrome extension: How to open a link in new tab? 【发布时间】:2013-05-06 09:56:31 【问题描述】:在我的 *** 文件夹中,我有 ***.ico
和 2 个波纹管文件。将其导入 Chrome 时,它会在地址栏中显示图标,但是当我单击它时,Chrome 不会打开任何新标签。我做错了什么?
manifest.json
"name": "***",
"version": "1",
"browser_action":
"default_icon": "***.ico"
,
"background":
"page": "index.html"
,
"permissions": ["tabs"],
"manifest_version": 2
index.html
<html>
<head>
<script>
chrome.browserAction.onClicked.addListener(function(activeTab)
var newURL = "http://***.com/";
chrome.tabs.create( url: newURL );
);
</script>
</head>
</html>
【问题讨论】:
【参考方案1】:问题是你违反了manifest version 2's content security policy
。要解决这个问题,您需要做的就是摆脱内联脚本,在这种情况下,您的背景是 page
。像这样把它变成背景script
:
manifest.json
"background":
"scripts": ["background.js"]
,
background.js
chrome.browserAction.onClicked.addListener(function(activeTab)
var newURL = "http://***.com/";
chrome.tabs.create( url: newURL );
);
如果出于某种原因,您确实需要将其作为页面,则只需将脚本作为外部文件包含在内,然后像以前一样将其声明为页面。
【讨论】:
如何从 popup.js 发送 newURL ? 这工作正常.. 但随后点击打开多个标签。有什么建议吗?【参考方案2】:在我的情况下,当我单击扩展弹出窗口中的链接时,我需要在新选项卡中打开链接,它可以在 target
属性设置为 _blank
时正常工作:
<a href="http://www.example.com" target="_blank">Example</a>
【讨论】:
好吧,这将在浏览器中打开新标签,但会关闭弹出窗口(并不总是需要的)。【参考方案3】:我更喜欢simpler solution - 只需向 onclick 添加操作
$('body').on('click', 'a[target="_blank"]', function(e)
e.preventDefault();
chrome.tabs.create(url: $(this).prop('href'), active: false);
return false;
);
这将在新标签中打开所有具有 target="_blank" 属性的链接(甚至是动态创建的链接)而不会失去弹出焦点。
【讨论】:
你在哪里称呼这个?我的意思是它是在 content.js 还是 background.js 下写的? 它是用 content.js 编写的【参考方案4】:你不需要 jQuery。只需使用window.open("http://example.com", "_blank")
。
【讨论】:
以上是关于Chrome 扩展程序:如何在新标签页中打开链接?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 javascript 在新标签页中打开 chrome 设置