Bagaimana ekstensi mengetahui bahwa ekstensi sedang dijalankan untuk pertama kali atau baru saja diperbarui, sehingga ekstensi dapat melakukan beberapa tindakan tertentu? (mis. buka halaman bantuan atau perbarui pengaturan)
98
Bagaimana ekstensi mengetahui bahwa ekstensi sedang dijalankan untuk pertama kali atau baru saja diperbarui, sehingga ekstensi dapat melakukan beberapa tindakan tertentu? (mis. buka halaman bantuan atau perbarui pengaturan)
Jawaban:
Di versi Chrome yang lebih baru (sejak Chrome 22), Anda dapat menggunakan
chrome.runtime.onInstalled
acara tersebut, yang jauh lebih bersih.Contoh:
sumber
Jawaban yang diperbarui untuk mencerminkan v3 dari manifes:
Chromium sekarang memiliki sekumpulan API chrome.runtime , yang memungkinkan Anda mengambil versi ekstensi.
Untuk mendapatkan versi saat ini:
Untuk mendengarkan saat ekstensi pertama kali dipasang, saat ekstensi diperbarui ke versi baru, dan saat Chromium diperbarui ke versi baru, Anda dapat menggunakan
onInstalled
acara tersebut.Itu saja!
Jawaban lama, sebelum 2011
Jika Anda ingin memeriksa apakah ekstensi telah dipasang atau diperbarui, Anda dapat melakukan sesuatu seperti ini:
sumber
prevVersion == 'undefined'
... dia sedang memeriksatypeof prevVersion == 'undefined'
. Ini jauh lebih kuat untuk digunakantypeof
saat memeriksa apakah suatu variabel tidak ditentukan ... lihat di sini untuk mempelajari alasannya: stackoverflow.com/a/3550319/130691Untungnya, sekarang ada acara untuk ini (sejak Chrome versi 22, dan 25 untuk acara pembaruan).
Untuk acara terinstal:
Untuk acara OnUpdateAvailable:
Kutipan penting tentang OnUpdateAvailable dari dokumen pengembang mengatakan:
sumber
Sederhana. Saat ekstensi pertama kali dijalankan, ekstensi
localStorage
kosong. Saat pertama kali dijalankan, Anda dapat menulis sebuah tanda di sana untuk menandai semua proses konsekuen sebagai non-first.Contoh, di background.htm:
EDIT: Untuk memeriksa apakah ekstensi baru saja diperbarui, simpan versi alih-alih bendera sederhana saat pertama kali dijalankan, lalu ketika versi ekstensi saat ini (dapatkan dengan
XmlHttpRequest
menggunakan manifes) tidak sama dengan yang disimpan di dalamnyalocalStorage
, ekstensi memiliki telah diperbarui.sumber
localStorage
memang berada di jendela terpisahnya sendiri dan tidak dibagikan dengan kode dan ekstensi lain di halaman seperti yang disebutkan @huyz. Untuk ekstensi, bagaimanapun, ini tidak terjadi.