Skrip Kandungan dan API Chrome: Ralat Rujukan Tidak Ditakrifkan
Apabila bekerja dengan skrip kandungan dalam sambungan Chrome, anda mungkin menghadapi ralat "Tidak boleh membaca property of undefined" apabila cuba mengakses API Chrome seperti chrome.tabs. Isu ini timbul walaupun memberikan kebenaran yang diperlukan dalam manifes.
Memahami Ketersediaan API Chrome
Skrip kandungan mempunyai akses terhad kepada API Chrome kerana pertimbangan keselamatan. Hanya kumpulan API terpilih boleh diakses dalam skrip kandungan:
API seperti itu sebagai chrome.tabs, yang memanipulasi tab penyemak imbas, hanya tersedia dalam skrip latar belakang (atau pekerja perkhidmatan dalam Manifest V3), skrip pop timbul dan konteks sambungan lain.
Penyelesaian: Mesej Lulus
Untuk mengakses API Chrome yang tidak tersedia dalam skrip kandungan, anda mesti menghantar mesej daripada skrip kandungan ke skrip latar belakang. Skrip latar belakang kemudiannya boleh melaksanakan operasi API dan menghantar hasil kembali ke skrip kandungan.
Berikut ialah coretan kod yang menunjukkan pendekatan ini:
// content script: chrome.runtime.sendMessage({ type: "getTabs" }, function(response) { console.log(response.tabs); }); // background script: chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { if (request.type == "getTabs") { chrome.tabs.query({}, function(tabs) { sendResponse({ tabs: tabs }); }); } });
Dengan mengikuti pendekatan ini, anda boleh dengan berkesan akses API Chrome yang tidak tersedia dalam skrip kandungan sambil mengekalkan keselamatan dan enkapsulasi.
Atas ialah kandungan terperinci Mengapa Skrip Kandungan Saya Tidak Boleh Mengakses chrome.tabs dan Bagaimana Saya Membetulkan Ralat 'Rujukan Tidak Ditakrifkan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!