Ekstensi Chrome: Jalankan setiap pemuatan halaman

91

Saya ingin membuat ekstensi chrome yang menjalankan beberapa skrip setelah satu halaman dimuat, saya tidak yakin apakah saya harus menerapkan logika ini di halaman latar belakang atau bisa di tempat lain, bantuan apa pun di sini akan sangat dihargai.

albertosh.dll
sumber
untuk berjaga-jaga, itu harus menjalankan skrip setelah halaman apa pun dimuat di browser.
albertosh
@ZloySmiertniy ya, cari saja skrip konten, juga pastikan bahwa di opsi run_at Anda meletakkan document_end dan juga di pertandingan: Anda perlu menentukan di url mana skrip Anda akan disuntikkan.
albertosh

Jawaban:

92

Dari skrip latar belakang Anda dapat mendengarkan chrome.tabs.onUpdatedacara dan memeriksa properti changeInfo.statusdi callback. Itu bisa memuat atau selesai . Jika sudah selesai , lakukan aksinya.

Contoh:

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

    // do your things

  }
})

Karena ini mungkin akan memicu pada setiap penyelesaian tab, Anda juga dapat memeriksa apakah tab tersebut activepada atribut homonymous -nya , seperti ini:

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

    // do your things

  }
})
fiatjaf
sumber
8
Uncaught TypeError: Cannot read property 'onUpdated' of undefined
Hijau
2
Apa? Jawaban ini dari 2 setengah tahun yang lalu. Segalanya mungkin telah berubah sekarang.
fiatjaf
1
Untuk melakukan halaman url spesifik:if (tab.url.startsWith("https://example.com") == false) return;
Nabi KAZ
47

Jika perlu dijalankan pada onloadevent halaman, yang berarti bahwa dokumen dan semua asetnya telah dimuat, ini harus berada dalam skrip konten yang disematkan di setiap halaman yang ingin Anda lacak onload.

Matchu
sumber
14
Akan lebih baik jika skrip konten dimasukkan ke "document_end" lihat "run_at" dalam manifes content_script:run_at: "document_end"
Mohamed Mansour
11

Kode ini harus melakukannya:

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!')
Evan Ross
sumber
apakah mungkin menggunakan ekspresi reguler dalam bidang "kecocokan"?
Bootuz
Ya, lihathttps://developer.chrome.com/extensions/content_scripts#matchAndGlob
Dean Meehan