VladimirAndreev VladimirAndr, [14.03.20 16:33]
Привет всем. Пишу плагин для браузера Google chrome. У меня есть popup.html, background.js, который работает в окне плагина popup.html и end.js, который работает в окне браузера. Для отправки команд из background.js в end.js я использую:
VladimirAndreev VladimirAndr, [14.03.20 16:33]
chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {
chrome.tabs.sendMessage(tabs[0].id, {
command: "blablabla"
});
});
VladimirAndreev VladimirAndr, [14.03.20 16:36]
[В ответ на VladimirAndreev VladimirAndr]
Плагин работает следующим образом: когда я открываю окно плагина popup.html и нажимаю в нем на кнопку, то открывается одна новая вкладка с кое-какой инфой. Но, если я до нажатия на кнопку в окне плагина открою и закрою окно плагина несколько раз, то после нажатия на кнопку откроется несколько одинаковых вкладок (по количеству открытий и закрытий окна плагина).
VladimirAndreev VladimirAndr, [14.03.20 16:37]
Вопрос: как сделать так, чтобы открывалась только одна вкладка в любом случае после нажатия на кнопку в окне плагина?
VladimirAndreev VladimirAndr, [14.03.20 16:38]
Мой файл манифест на всякий случай:
VladimirAndreev VladimirAndr, [14.03.20 16:38]
{
"manifest_version": 2,
"name": "dfg",
"version": "
1.0.0.4",
"background": {
"scripts": [
"content_scripts/background.js"
],
"persistent": false
},
"browser_action": {
"default_icon": "img/icon.png",
"default_title": "dfg",
"default_popup": "html/popup.html"
},
"permissions": [
"tabs","
https://www.google.com/*","
https://www.google.ru/*"
]
}
VladimirAndreev VladimirAndr, [14.03.20 16:43]
[В ответ на AntiPlayer]
Связь следующая: когда нажимаю на кнопку, то запускает скрипт окна браузера background.js и отправляет команду в файл end.js при помощи события: chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {
chrome.tabs.sendMessage(tabs[0].id, {
command: "blablabla"
});
});
В свою очередь, end.js принимает команду и запускает функцию при помощи события:
const getMessage = (message) =>
{
transferCoordinate(message);
}
chrome.runtime.onMessage.addListener(getMessage);
const transferCoordinate = (message) =>
{
chrome.runtime.onMessage.removeListener(getMessage);
if (message.command === "blablabla") {
vkladka = "";
openvkladka(vkladka);
}