Как поймать клик с помощью event.target в popup.js и передать его content.js

222
23 октября 2021, 19:20

Есть расширение для хрома, которое обрабатывает все цвета на открытой вкладке и выводит их в popup, например вот так — rgb(192, 72, 72) и так далее.

Есть файлы:

  1. popup.html
  2. popup.js
  3. popup.css
  4. content.js
  5. manifest.json

Поставил addEvenListener в popup.js, попап и выводит у себя клик в консоли, но мне нужно этот же клик передавать в content.js.

popup.js:

 list.addEventListener('click', function(e) {
  let target = e.target;
  console.log(target);
  chrome.tabs.query({currentWindow: true, active: true}, tabs => {
    let currentTab = tabs[0];
    chrome.tabs.sendMessage(currentTab.id, target);
  });
});

content.js:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
console.log(request); 
});

В content.js выводит объект:

Как сделать так, чтобы клик внутри попапа отображался в контент-скрипте?

Answer 1

Согласно документации:

A message can contain any valid JSON object (null, boolean, number, string, array, or object).

Сообщение может содержать любой валидный JSON (null, boolean, number, string, array, или object)

В вашем случае вы пытаетесь передать DOM элемент, который не является валидным типо данных для системы сообщений.

Полагаю вам стоит передавать значение этого элемента или некий кастомный JSON. В остальном ваш код рабочий.

READ ALSO
Передать данные из HTML в JS [закрыт]

Передать данные из HTML в JS [закрыт]

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение

155
Sort an object by name [дубликат]

Sort an object by name [дубликат]

Помогите отсортировать объекты в алфавитном порядке по полю name

138
Работа с файлами HTML and JS

Работа с файлами HTML and JS

Создаю программу и надо решить проблему: В программе есть окошко для выбора текстового файла, код:

113
библиотека js-cookie

библиотека js-cookie

подскажите пожалуйста , есть библиотека fakerjs для генерации имени , как сделать так чтоб при первом заходе на сайт одно имя записалось в куку...

158