我正在开发一个chrome扩展,我想在网页上注入一个按钮。 单击按钮后,我想调用chrome.tabs.create API将HTML页面打开到新选项卡中。
据我们所知,我们无法使用内容脚本直接打开标签,因此实现上述功能的解决方案是什么。
让我们说我有一个元素名称"按钮"注入按钮我使用以下代码添加了evnetHandler,但如何使用此函数在background.js中创建新选项卡
button.addEventListener('click',clickhandeler,true);
manifest.json文件: -
{
"name": "my chrome extension",
"version": "1.0",
"manifest_version": 2,
"description": "open the tab when button is cllicked",
"permissions":["activeTab","tabs"],
"background": {
"scripts": ["event.js"],
"persistent": false
},
"browser_action": {
"name": "Manipulate DOM",
"default_icon": "icon.png"
},
"content_scripts": [ {
"js": [ "jquery.min.js", "inject.js" ],
"css": [ "inject.css" ],
"matches": [ "http://*/*", "https://*/*"]
}]
}
答案 0 :(得分:1)
评论后:为什么不向您的后台脚本发送消息并让它打开新标签?
在您的页面脚本中:
$('button').click(function(){
chrome.runtime.sendMessage("newtab");
});
在你的background.js
中chrome.runtime.onMessage.addListener(function(message){
if (message == "newTab){
var url = "http://google.com/";
chrome.tabs.create({ url: url });
}
});
注意:这是此答案的一个非常简单的示例,因为您不显示HTML。 button
只会匹配任何按钮,因此您需要更新该选择器以匹配您的HTML。此外,我们通常有一个用于消息的有效负载结构,包含消息类型(字符串)和其他参数。