Chrome Uzantısı: Her sayfa yüklemesinde çalışmasını sağlayın


91

Bir sayfa yüklendikten sonra bazı komut dosyalarını çalıştıran bir krom uzantısı yapmak istiyorum, bu mantığı arka plan sayfasına uygulamam gerekip gerekmediğinden emin değilim, yoksa başka bir yerde olabilir, buradaki herhangi bir yardım çok takdir edilecektir.


her ihtimale karşı, tarayıcıya herhangi bir sayfa yüklendikten sonra komut dosyasını çalıştırmalıdır.
albertosh

@ZloySmiertniy evet, sadece içerik komut dosyalarını arayın, ayrıca run_at seçeneğinde document_end ve ayrıca eşleşmeleri de koyduğunuzdan emin olun: komut dosyalarınızın hangi url'lere enjekte edileceğini belirtmeniz gerekir.
albertosh

Yanıtlar:


92

Bir arka plan komut dosyasındanchrome.tabs.onUpdated olayı dinleyebilir changeInfo.statusve geri aramada özelliği kontrol edebilirsiniz . Bu olabilir yükleme veya komple . Eğer durum bu ise tam , eylem yapmak.

Misal:

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete') {

    // do your things

  }
})

Bu muhtemelen her sekme tamamlanması tetikleyeceği için sekme ise, kontrol edebilir, activeonun üzerinde eşsesli özniteliği bu gibi:

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete' && tab.active) {

    // do your things

  }
})

8
Uncaught TypeError: Cannot read property 'onUpdated' of undefined
Green

2
Ne? Bu cevap 2 buçuk yıl öncesinden. Muhtemelen her şey şimdi değişti.
fiatjaf

1
Belirli bir url sayfası yapmak için:if (tab.url.startsWith("https://example.com") == false) return;
Nabi KAZ

47

onloadSayfanın olayında çalıştırılması gerekiyorsa , yani belgenin ve tüm varlıklarının yüklenmiş olduğu anlamına gelir, bu , izlemek istediğiniz her sayfaya gömülü bir içerik komut dosyası içinde olmalıdır onload.


14
İçerik betiğinin content_script manifestindeki "document_end" see "run_at" kısmına enjekte edilmesine izin vermek daha iyi olacaktır:run_at: "document_end"
Mohamed Mansour


11

Bu kod bunu yapmalıdır:

manifest.json

   {
      "name": "Alert 'hello world!' on page opening",
      "version": "1.0",
      "manifest_version": 2,
      "content_scripts": [
        {
          "matches": [
            "<all_urls>"
          ],
          "js": ["content.js"]
        }
      ]
    }

content.js

alert('Hello world!')

"eşleşmeler" alanında regexp kullanmak mümkün mü?
Bootuz

Evet, bakınhttps://developer.chrome.com/extensions/content_scripts#matchAndGlob
Dean Meehan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.