從Chrome 擴充程式中的內容腳本存取全域變數
儘管嘗試透過jQuery.load 從目前Gmail 郵件中擷取GLOBALS 變數( )在內容腳本中,由於隔離,錯誤仍然存在。
解決方案:腳本注入和事件偵聽器
要存取頁面視窗的全域屬性,請考慮使用:
var s = document.createElement('script'); s.src = chrome.extension.getURL('script.js'); (document.head||document.documentElement).appendChild(s);
腳本加載後,將其刪除以保持整潔:
s.onload = function() { s.remove(); };
document.addEventListener('RW759_connectExtension', function(e) { // e.detail contains transferred data, e.g., GLOBALS });
示例代碼:
contentscript.js(在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」):
setTimeout(function() { document.dispatchEvent(new CustomEvent('RW759_connectExtension', { detail: GLOBALS // Send data })); }, 0);
記得將「script.js」加入到清單檔案中的web_accessible_resources 部分。
最佳實踐:
最小化注入中的邏輯腳本並處理內容腳本中的大部分處理,以確保擴展可靠性和對chrome.* API等附加功能的存取。
以上是如何從 Chrome 擴充功能中的內容腳本存取全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!