Suntikan semula skrip kandungan: langkah yang perlu selepas peningkatan atau pemasangan sambungan Chrome
P粉066224086
2023-08-24 12:03:01
<p>Selepas memasang atau menaik taraf sambungan Chrome yang saya sedang bangunkan, skrip kandungan (dinyatakan dalam manifes) tidak disuntik semula, jadi muat semula halaman diperlukan untuk sambungan itu berfungsi dengan betul. Adakah terdapat cara untuk memaksa skrip disuntik semula? </p>
<p>Saya percaya saya boleh menyuntiknya semula dengan mengalih keluarnya secara pemrograman daripada manifes dan kemudian memproses halaman untuk disuntik dalam halaman latar belakang, tetapi itu bukan penyelesaian yang baik. </p>
<p>Saya tidak mahu memuat semula tab pengguna secara automatik kerana ini mungkin mengakibatkan kehilangan data. Safari menyegarkan semua halaman secara automatik apabila sambungan dipasang atau dinaik taraf. </p>
Satu-satunya cara untuk memaksa suntikan skrip kandungan tanpa menyegarkan halaman adalah melalui suntikan program.
Anda boleh menggunakan API Teg Chrome untuk mendapatkan semua teg anda dan menyuntik kod ke dalamnya. Sebagai contoh, anda boleh menyimpan nombor versi dalam storan setempat dan setiap kali anda menyemak sama ada nombor versi dalam halaman latar belakang sudah lapuk (jika ada), anda boleh mendapatkan semua teg aktif dan menyuntik kod anda secara pengaturcaraan, atau apa sahaja penyelesaian untuk memastikan sambungan anda dikemas kini.
Gunakan kod berikut untuk mendapatkan semua tag:
chrome.tabs.query
dan masukkan kod anda ke dalam semua halaman
chrome.tabs.executeScript(tabId, {file: "content_script.js"});
Terdapat cara untuk menjadikan sambungan kandungan-skrip-berat terus berfungsi dengan betul selepas menaik taraf dan menjadikannya langsung selepas pemasangan.
Pemasangan/Naik Taraf
Cara untuk memasangnya ialah dengan hanya melingkari semua tab dalam semua tetingkap dan menyuntik beberapa skrip dalam tab dengan URL yang sepadan secara pemrograman.
ManifestV3
manifest.json:
Kebenaran_hos ini hendaklah sama dengan skrip kandungan
matches
.background.js:
Ini adalah contoh ringkas dan tidak berkaitan dengan bingkai. Anda boleh menggunakan API getAllFrames dan memadankan URL sendiri, lihat dokumentasi untuk corak padanan.
ManifestV2
Jelas sekali anda perlu melakukan ini dalam halaman latar belakang atau halaman acaraskrip yang diisytiharkan dalam manifes.json:
background.js:
Fakta Menarik Sejarah
Dalam Chrome 26 purba dan lebih awal, skrip kandungan boleh memulihkan sambungan ke skrip latar belakang. Ini telah ditetapkan pada 2013http://crbug.com/168263. Anda boleh melihat contoh teknik ini dalam versi awal jawapan ini.