Можно ли перенести строку с одной уже открытой вкладки на другую уже открытую вкладку с расширением Chrome?

0

Вопрос

Ну, я застрял в этом вопросе, потому что даже не знаю, с чего начать поиск.

Вот проблема, которую я хочу решить:

Я хотел бы автоматизировать некоторый процесс, требующий "копирования-вставки" значений с одного сайта на другой (с разными URL-адресами), поэтому я хотел бы создать расширение, в котором я мог бы найти узел DOM, взять его текстовое значение и автоматически поместить в текстовое поле с другой страницы.

Я поискал в официальной документации Mozilla и обнаружил, что "tabs.SendMessage" может быть чем-то, что я мог бы использовать, но мне нужна tabs.id и для того, что я прочитал, "chrome.tabs", похоже, является свойством только расширений, поэтому я начинаю думать, что, возможно, это невозможно сделать.

Я хотел бы узнать, как это сделать, потому что это сэкономило бы мне часы от рутинной работы, которая требует передачи данных с одной вкладки на другую, но кое-что меняет.

google-chrome-extension
2021-11-18 00:58:34
1

Лучший ответ

0

Благодаря @wOxxOm я нашел способ решить эту проблему, вот решение, которое я получаю:

Всплывающее окно действия, которое запускает сценарий на странице, из которого я беру информацию, и сценарий содержимого, который запускается на целевой странице, вот манифест.json:

{
  "name": "autofill",
  "description": "Writes info from one tab to another",
  "version": "1.0",
  "manifest_version": 3,
  "background": {
    "service_worker": "first-page-background.js"
  },
  "permissions": ["storage", "activeTab", "scripting"],
  "content_scripts": [
    {
      "matches": ["https://second-tab.com/"],
      "js": ["second-tap-content.js"]
    }
  ],
  "action": {
    "default_popup": "popup.html"
  }
}

Вот javascript, связанный с "popup.html" в котором я изменяю переменную хранилища chrome:

document
.querySelector('xpath_to_element_i_want_trigger_action') 
.addEventListener('click', () => {
  let data = document.querySelector(
    'xpath_to_data'
  ).innerText;
  chrome.storage.sync.set({ form_data: data });
});

А вот запущенный код в содержимом скрипта для второй вкладки:

chrome.storage.onChanged.addListener(function (changes) {
  for (let [key, { oldValue, newValue }] of Object.entries(changes)) {
    
    let searchBox = document.querySelector("#id_in_form)

    searchBox.innerHTML = newValue

  }
});

Я надеюсь, что это поможет кому-нибудь еще!

2021-11-22 19:10:38

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................