Size: a a a

JavaScript — русскоговорящее сообщество

2020 March 14

VV

VladimirAndreev VladimirAndr in JavaScript — русскоговорящее сообщество
VladimirAndreev VladimirAndr
Привет всем. Пишу плагин для браузера Google chrome. У меня есть popup.html, background.js, который работает в окне плагина popup.html и end.js, который работает в окне браузера. Для отправки команд из background.js в end.js я использую:

chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {
                           chrome.tabs.sendMessage(tabs[0].id, {
                               command: "blablabla"
                           });
                       });

Плагин работает следующим образом: когда я открываю окно плагина popup.html и нажимаю в нем на кнопку, то открывается одна новая вкладка с кое-какой инфой. Но, если я до нажатия на кнопку в окне плагина открою и закрою окно плагина несколько раз, то после нажатия на кнопку откроется несколько одинаковых вкладок (по количеству открытий и закрытий окна плагина).

Связь между popup - скриптом и end.js следующая: когда нажимаю на кнопку, то запускает скрипт окна браузера 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);
           }

Мой файл манифест на всякий случай:

{
   "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/*"
   ]
}
Вопрос: как сделать так, чтобы открывалась только одна вкладка в любом случае после нажатия на кнопку в окне плагина?
источник

TZ

Timur Zhumashev in JavaScript — русскоговорящее сообщество
Господа, помогите нубу)))
источник

TZ

Timur Zhumashev in JavaScript — русскоговорящее сообщество
У менять 2 блока, по клику на любой из них я добавлю .price__active (и убираю у другого соответственно)

Теперь мне нужно, чтобы при наличии у одного из блоков .price__active отображались другие определённые блоки (в разметке это блоки с классом .cremation и .burial соответственно.

Помогите, а)
источник

TZ

Timur Zhumashev in JavaScript — русскоговорящее сообщество
я решил проблему так https://jsfiddle.net/tbxwu6jk/
источник

TZ

Timur Zhumashev in JavaScript — русскоговорящее сообщество
но это даже для меня неопытного кажется не совсем корректным подходом
источник

TZ

Timur Zhumashev in JavaScript — русскоговорящее сообщество
буду благодарен за подсказку, как эо корректно реализовать
источник

AR

Axel R in JavaScript — русскоговорящее сообщество
Подскажите плагин для браузера, автообновления страницы в указанное время,... все рефрешат через интервал какой-то. А мне нужно чтобы обновилась она в 00:00:01 (условно)
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Axel R
Подскажите плагин для браузера, автообновления страницы в указанное время,... все рефрешат через интервал какой-то. А мне нужно чтобы обновилась она в 00:00:01 (условно)
Глянь через сколько наступит это время относительно локального.

Установи тайм-аут на это количество мс
источник

AR

Axel R in JavaScript — русскоговорящее сообщество
Sm•ok 😈✔️
Глянь через сколько наступит это время относительно локального.

Установи тайм-аут на это количество мс
да, тоже думал о таком, но неудобно каждый раз считать, если нужна точность до секунды
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Axel R
да, тоже думал о таком, но неудобно каждый раз считать, если нужна точность до секунды
Почему?
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
new Date(дата и время когда надо)

Получаешь миллисекунды

Отнимаешь от текущих миллисекунд

Ставишь таймер на эту разницу
источник

in JavaScript — русскоговорящее сообщество
Привет. А можно ли в одном проекте использовать и yarn, и npm (разным разработчикам)?
источник

KA

Kenan Ayvazov in JavaScript — русскоговорящее сообщество
Привет. А можно ли в одном проекте использовать и yarn, и npm (разным разработчикам)?
Да
источник

in JavaScript — русскоговорящее сообщество
А разве это не вызовет какие-то приколы с зависимостями?
источник

AR

Axel R in JavaScript — русскоговорящее сообщество
Sm•ok 😈✔️
new Date(дата и время когда надо)

Получаешь миллисекунды

Отнимаешь от текущих миллисекунд

Ставишь таймер на эту разницу
я о том что мне нужно сделать автообновление страицы к примеру на протяжении 2 недель и 10 раз на день, и считать секунды я задолбаюсь, тем более, точно не посчитаю, пока туда-сюда, пока вбить и нажать сейв, уже секунд 4 пройдет.
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
)))
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Зачем такое вообще делать
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
У тебя там что, утечка памяти
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Axel R
я о том что мне нужно сделать автообновление страицы к примеру на протяжении 2 недель и 10 раз на день, и считать секунды я задолбаюсь, тем более, точно не посчитаю, пока туда-сюда, пока вбить и нажать сейв, уже секунд 4 пройдет.
так ты же не руками считать будешь?
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
const planReload = (dateStr, callback) => {
   const reloadDate = new Date(dateStr);
   const timeDiff = reloadDate -  new Date();

   if(!timeDiff) return 'Укажите нормальное время';
   
   setTimeout(callback, timeDiff);
}
источник