Rumah >hujung hadapan web >tutorial js >Mengapakah Saya Mendapat 'Tidak dapat membaca sifat yang tidak ditentukan' Apabila Menggunakan API Chrome dalam Skrip Kandungan?

Mengapakah Saya Mendapat 'Tidak dapat membaca sifat yang tidak ditentukan' Apabila Menggunakan API Chrome dalam Skrip Kandungan?

Linda Hamilton
Linda Hamiltonasal
2024-12-13 07:41:11134semak imbas

Why Do I Get

Mengakses Chrome API dalam Skrip Kandungan: Mengendalikan Ralat "Tidak boleh membaca sifat yang tidak ditentukan"

Apabila cuba menggunakan fungsi API Chrome seperti chrome .tab dalam skrip kandungan, ia boleh mengakibatkan ralat "Tidak boleh membaca sifat yang tidak ditentukan." Ini berlaku walaupun secara eksplisit memasukkan kebenaran yang diperlukan dalam manifes sambungan.

Sekatan pada Skrip Kandungan

Adalah penting untuk memahami bahawa skrip kandungan mempunyai akses terhad kepada fungsi API Chrome. Mereka boleh mengakses subset kaedah API yang berkaitan dengan:

  • chrome.i18n
  • chrome.dom
  • chrome.storage
  • Sesetengah khusus fungsi daripada chrome.runtime/chrome.extension

API seperti chrome.tabs biasanya dikhaskan untuk skrip latar belakang, skrip pop timbul dan jenis skrip lain dengan akses yang lebih luas kepada fungsi penyemak imbas.

Penyelesaian: Komunikasi dengan Skrip Latar Belakang

Untuk mengakses fungsi API Chrome tidak tersedia untuk skrip kandungan, anda perlu mewujudkan komunikasi dengan skrip latar belakang. Ini melibatkan:

  1. Menghantar mesej daripada skrip kandungan ke skrip latar belakang.
  2. Memproses mesej dalam skrip latar belakang menggunakan fungsi API yang dikehendaki.
  3. Menghantar hasil atau respons kembali kepada skrip kandungan.

Berikut ialah contoh pelaksanaan ini penyelesaian:

Skrip Kandungan (myScript.js):

// Send a message to the background script requesting access to chrome.tabs
chrome.runtime.sendMessage({ type: "access_tabs" }, response => {
  // Handle the response from the background script: e.g., display the result
});

Skrip Latar Belakang (background.js):

// Background script intercepts the message from the content script
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
  if (message.type === "access_tabs") {
    // Access chrome.tabs API here and send the result back to the sender (content script)
    sendResponse({ value: chrome.tabs.getCurrent().id });
  }
});

Dengan melaksanakan mekanisme komunikasi ini, anda boleh meluaskan keupayaan skrip kandungan dan mengakses fungsi API Chrome dengan berkesan yang sebaliknya tidak akan tersedia.

Atas ialah kandungan terperinci Mengapakah Saya Mendapat 'Tidak dapat membaca sifat yang tidak ditentukan' Apabila Menggunakan API Chrome dalam Skrip Kandungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn