Bir dizeyi zaten açık olan bir sekmeden Chrome uzantısıyla önceden açılmış başka bir sekmeye aktarmak mümkün mü?

0

Soru

Bu soruya takıldım çünkü aramaya nereden başlayacağımı bile bilmiyorum.

İşte çözmek istediğim sorun:

Bir siteden diğerine (farklı url'lerle) "kopyala-yapıştır" değerleri gerektiren bazı işlemleri otomatikleştirmek istiyorum, böylece bir DOM düğümünü bulabileceğim ve metin değerini alabileceğim ve otomatik olarak başka bir sayfadan bir metin alanına yerleştirebileceğim bir uzantı yapmak istiyorum.

Mozilla'nın resmi belgelerinde arama yaptım ve "sekmeler" i buldum.sendMessage "kullanabileceğim bir şey olabilir ama ihtiyacım var tabs.id ve okuduklarım için" chrome.sekmeler " yalnızca uzantılardan bir özellik gibi görünüyor, bu yüzden belki de bunu yapmanın bir yolu olmadığını düşünmeye başlıyorum.

Bunu nasıl yapacağımı öğrenmek istiyorum çünkü bana bir sekmeden diğerine veri aktarmayı gerektiren rutin işlerden saatler kazandıracak, ancak bazı şeyleri değiştirecek.

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

En iyi cevabı

0

@wOxxOm sayesinde bu sorunu çözmenin bir yolunu buldum, işte aldığım çözüm:

Bilgiyi aldığımdan sayfadaki komut dosyasını başlatan bir eylem açılır penceresi ve hedef sayfada çalışan bir içerik komut dosyası, işte bildirim.jsonname:

{
  "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"
  }
}

İşte " açılır pencereye bağlı javascript.chrome depolama değişkenini değiştirdiğim html":

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 });
});

Ve işte ikinci sekme için komut dosyası içeriğinde çalışan kod:

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

  }
});

Umarım bu başkalarına yardım eder!

2021-11-22 19:10:38

Diğer dillerde

Bu sayfa diğer dillerde

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