点击按钮后,Chrome扩展程序无法打开新窗口

时间:2016-01-10 07:42:21

标签: html html5 google-chrome-extension

我在stackoverflow上遵循了一些指南,甚至完全从这个page复制代码。当我按下页面上的按钮时,它工作正常;但是,当我将它添加到我的项目时,窗口不会弹出。是否有像我需要配置的一些设置才能弹出?

1 个答案:

答案 0 :(得分:1)

要在Chrome扩展程序中打开新的window,您必须使用Chrome扩展程序window.create API创建一个窗口。现在要使用此API,您必须在manifest.json

中添加选项卡权限
 {
    "name": "My extension",
    ...
    "permissions": ["tabs"],
    ...
  }

您的弹出式脚本或内容脚本仍然没有直接使用此API的权限,您必须先告诉后台脚本打开一个新窗口。

在弹出式脚本中

在按钮单击处理程序中:

chrome.runtime.sendMessage({message: "openWindow"});

现在在你的后台脚本中添加一个监听器来监听事件,如果它会收到消息“openWindow”,它会创建一个这样的新窗口:

在后台脚本中

 chrome.runtime.onMessage.addListener(function (req, sender, res) {
     if(req.message == "openWindow"){
         var path = "https://www.stackoverflow.com"; /*path/to/page or web URL*/
         openCustomWindow(path);
     }
 });


 function openCustomWindow(uri){
    var winObj = {
        url: uri,
        width: 600,
        height: 600,
        left: Math.round(screen.width / 2 - 400 / 2),
        top: Math.round(screen.height / 2 - 400 / 2),
        focused: true,
        type: "normal",
        state: "normal"
    };
    chrome.windows.create(winObj);
 }

您可以在documentation

中查看窗口属性