从 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中文网其他相关文章!