您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Chrome扩展程序-从网页检索全局变量

Chrome扩展程序-从网页检索全局变量

内容脚本在隔离的环境中运行。要访问(页面window)任何全局属性,您必须注入一个<script>元素,或使用事件侦听器来传递数据。

有关在页面上下文中注入元素的示例,请参见此答案<script>

"run_at": "document_end"清单中):

var s = document.createElement('script');
s.src = chrome.extension.getURL('script.js');
(document.head||document.documentElement).appendChild(s);
s.onload = function() {
    s.remove();
};

// Event listener
document.addEventListener('RW759_connectExtension', function(e) {
    // e.detail contains the transferred data (can be anything, ranging
    // from JavaScript objects to strings).
    // Do something, for example:
    alert(e.detail);
});

-位于扩展目录中,这将被注入页面本身:

setTimeout(function() {
    /* Example: Send data from the page to your Chrome extension */
    document.dispatchEvent(new CustomEvent('RW759_connectExtension', {
        detail: GLOBALS // Some variable from Gmail.
    }));
}, 0);

由于此文件是通过DOM中的chrome-extension:URL加载的,因此必须将“ script.js”添加到清单文件的web_accessible_resources部分。否则,Chrome将拒绝加载脚本文件

您应该在网页中运行尽可能少的逻辑,并在内容脚本中处理大部分逻辑。这有多个原因。首先,页面中注入的任何脚本都在与网页相同的上下文中运行,因此,网页可以(有意或无意)修改JavaScript / DOM方法,以使扩展程序停止工作。其次,内容脚本可以访问其他功能,例如chrome。* API的有限子集和跨域网络请求(前提是扩展程序已声明了这些功能的许可)。

其他 2022/1/1 18:22:15 有484人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶