Mengakses Pembolehubah Global daripada Skrip Kandungan dalam Sambungan Chrome
Walaupun cubaan untuk mendapatkan pembolehubah GLOBALS daripada mesej Gmail semasa melalui jQuery.load( ) dalam skrip kandungan, ralat berterusan disebabkan pengasingan.
Penyelesaian: Suntikan Skrip dan Pendengar Acara
Untuk mengakses sifat global tetingkap halaman, pertimbangkan untuk menggunakan:
var s = document.createElement('script'); s.src = chrome.extension.getURL('script.js'); (document.head||document.documentElement).appendChild(s);
Setelah skrip dimuatkan, keluarkannya untuk kebersihan:
s.onload = function() { s.remove(); };
document.addEventListener('RW759_connectExtension', function(e) { // e.detail contains transferred data, e.g., GLOBALS });
Kod Contoh:
contentscript.js (Jalankan di document_end):
// Inject script var s = document.createElement('script'); s.src = chrome.extension.getURL('script.js'); (document.head||document.documentElement).appendChild(s); // Event listener document.addEventListener('RW759_connectExtension', function(e) { alert(e.detail); // Access GLOBALS });
script.js ("run_at": "document_end" dalam manifes):
setTimeout(function() { document.dispatchEvent(new CustomEvent('RW759_connectExtension', { detail: GLOBALS // Send data })); }, 0);
Ingat untuk menambah "script.js" pada bahagian web_accessible_resources dalam fail manifes.
Amalan Terbaik:
Minimumkan logik dalam suntikan skrip dan mengendalikan kebanyakan pemprosesan dalam skrip kandungan untuk memastikan kebolehpercayaan sambungan dan akses kepada ciri tambahan seperti chrome.* API.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Pembolehubah Global daripada Skrip Kandungan dalam Sambungan Chrome?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!