2016-01-10 12 views
0

Я следил за несколькими руководствами по стековому потоку и даже точно копировал код именно с этого page. Когда я нажимаю кнопку на странице, она работает нормально; однако, когда я добавляю его в свой проект, окно не открывается. Есть ли какие-то настройки, которые мне нужно настроить для всплывающего окна?Расширение Chrome не открывается в новом окне при нажатии кнопки

ответ

1

Чтобы открыть новый window в chrome extension, вам необходимо создать окно с использованием расширения хром 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

Смежные вопросы