在Chrome扩展程序中从popup.html连接到background.js脚本

时间:2018-07-18 21:20:09

标签: javascript html google-chrome google-chrome-extension

在Chrome扩展程序中从popup.html连接到background.js脚本。 当我单击按钮时,我希望后台脚本打开一个新选项卡。

背景脚本:

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {    
    if (message == "output") {

       var win = window.open('https://www.google.ca/webhp?hl=en&sa=X&ved=0ahUKEwjesaKd26TcAhWNw4MKHcN-CwgQPAgD', '_blank');
       win.focus();    
    }    
});

HTML:

<body>
    <script src="next.js"></script> 
    <input id="output" type="button" value="Go To Alternative Forum"/>
</body> 

下一步:

 document.getElementById("output").addEventListener(("click"),function(){

        chrome.runtime.sendMessage("output"); 
});

2 个答案:

答案 0 :(得分:1)

您在代码中的脚本引用应具有src =“”属性而不是href =“”。此处的示例:

HTML:

<body>
    <script src="next.js"></script>
    <input onclick="start();" type="button" value="Go to google" />
</body>

next.js:

function start() {
    var win = window.open('https://www.google.ca/webhp?hl=en&sa=X&ved=0ahUKEwjesaKd26TcAhWNw4MKHcN-//CwgQPAgD', '_blank');
    win.focus();
}

答案 1 :(得分:0)

您可以通过window.open执行此操作。

但是,如果您想将html连接到background.js,则官方方法是将脚本next.js中的消息发送到background.js,然后background.js将创建新标签页以打开链接。

以下代码适用于您的情况:

next.js

 document.getElementById("next").addEventListener("click",function(){

        chrome.runtime.sendMessage({type: "openTab",value:code},function(response) {

        });

    });

popup.html

<body>
    <script src="next.js"></script>
    <input id="next" type="button" value="Go to google" />
</body>

background.js

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {

    if (request.type == "openTab") {

        chrome.tabs.create({"url": "http://www.google.com", "selected": true}, function (tab) {

        });

    }

});