從 Chrome 擴充功能存取 Gmail 中的全域變數
使用 Gmail 擴充程式通常需要從目前正在查看的郵件存取全域變數。但是,由於內容腳本的隔離環境,這可能會帶來挑戰。
要從 Gmail 網頁檢索 GLOBALS 變量,不能簡單地使用 jQuery.load()。相反,您必須注入新的 <script>元素或利用事件監聽器進行資料傳輸。 </script>
注入腳本元素
透過注入<script>元素,您可以將外部腳本載入到頁面的上下文中。然後,該腳本可以存取全域變數並將它們發送回擴充。例如,在您的內容腳本(contentscript.js) 中:</script>
<code class="javascript">var s = document.createElement('script'); s.src = chrome.extension.getURL('script.js'); (document.head||document.documentElement).appendChild(s); s.onload = function() { s.remove(); };</code>
注入的腳本(script.js) 將包含:
<code class="javascript">setTimeout(function() { // Send `GLOBALS` to the extension document.dispatchEvent(new CustomEvent('RW759_connectExtension', { detail: GLOBALS })); }, 0);</code>
使用事件監聽器
或者,您可以使用事件偵聽器在頁面和擴充功能之間傳遞資料。內容腳本將偵聽由注入腳本觸發的事件,如下所示:
<code class="javascript">// Event listener in contentscript.js document.addEventListener('RW759_connectExtension', function(e) { // e.detail contains the transferred data (GLOBALS) alert(e.detail); });</code>
請記住將 script.js 包含在清單檔案的 web_accessible_resources 部分中,以允許 Chrome 載入它。
最佳實踐
將內容腳本中的邏輯保持在最低限度,並專注於資料處理。這有助於保護您的擴充功能免受網頁程式碼中的修改或錯誤的影響,並使您可以存取內容腳本提供的增強功能。
以上是如何從 Chrome 擴充功能存取 Gmail 中的全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!