Czy można przenieść pasek z jednej otwartej karty na drugą już otwartą kartę z rozszerzeniem Chrome?

0

Pytanie

Cóż, jestem uwięziony w tej sprawie, bo nawet nie wiem, od czego zacząć poszukiwania.

Oto problem, który chciałbym rozwiązać:

Chciałbym zautomatyzować pewne procesy, wymagające "kopiuj-wklej" wartości z jednej strony na drugą (z różnymi adresami URL), więc chciałem stworzyć rozszerzenie, w którym mógłbym znaleźć węzeł DOM, weź jego wartość tekstowa i automatycznie umieścić w pole tekstowe z drugiej strony.

Poszukałem w oficjalnej dokumentacji Mozilla i stwierdził, że "tabs.SendMessage" może być czymś, co mógłbym użyć, ale potrzebuję tabs.id i dla tego, co czytałem, "chrome.tabs", jak się wydaje, jest właściwością tylko rozszerzeń, więc zaczynam myśleć, że być może, to nie da się zrobić.

Chciałbym się dowiedzieć, jak to zrobić, bo to jest zapisane by mi zegarek od rutynowej pracy, która wymaga transmisji danych z jednej karty na drugą, ale coś zmienia.

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

Najlepsza odpowiedź

0

Dzięki @wOxxOm znalazłem sposób, aby rozwiązać ten problem, to rozwiązanie, które dostaję:

Okno pop-up kroki, które uruchamia skrypt na stronie, z której biorę informacje i scenariusz zawartości, który jest uruchamiany na stronie docelowej, to oczywiste.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"
  }
}

Oto javascript, związane z "popup.html" w którym mogę zmienić zmienną magazynu 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 });
});

A oto działający kod w treści skryptu dla drugiej karty:

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

  }
});

Mam nadzieję, że to pomoże komuś innemu!

2021-11-22 19:10:38

W innych językach

Ta strona jest w innych językach

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