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.


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

  }
})

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.


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!')

apakah mungkin menggunakan ekspresi reguler dalam bidang "kecocokan"?
Bootuz

Ya, lihathttps://developer.chrome.com/extensions/content_scripts#matchAndGlob
Dean Meehan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.