首页  >  文章  >  web前端  >  如何从 Chrome 扩展程序访问 Gmail 中的全局变量?

如何从 Chrome 扩展程序访问 Gmail 中的全局变量?

DDD
DDD原创
2024-10-26 04:32:02284浏览

How can I access global variables in Gmail from a Chrome extension?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn