gpt4 book ai didi

javascript - 从 Chrome 扩展程序访问 Google Analytics window._gaq

转载 作者:行者123 更新时间:2023-11-29 18:24:15 27 4
gpt4 key购买 nike

我正在编写一个 chrome 扩展,主要用于学习目的,如果安装了 Google Analytics,它将向我显示 Google Analytics 跟踪 ID (UA-xxxxxx-x)。

我知道我需要对页面中的内容脚本使用 sendRequest 来检索信息,并且已成功实现该功能

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
// analytics request check GA and send back
if(request.requestDetail == "analytics") {

console.log(window._gaq);
console.log(window._gaq._getAsyncTracker()._getAccount());

// unknown response, send back nothing!
} else {
sendResponse({});
}
});

监听器正在接收请求,我正在测试的网页上肯定安装了 Google Analytics,window._gaq 和 window._gaq._getAsyncTracker()._getAccount() 都可以通过控制台访问并返回我期望的内容。

为什么通过监听器访问时 window._gaq 未定义?我应该如何从 chrome 扩展访问它?

我知道这是出于安全原因,所以也尝试修改 list 以包含以下内容,但仍然没有成功

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"

我想第二个问题是:

我正在尝试以我正在使用的方式实现可能的目标吗(我已经设法通过对页面内容进行正则表达式匹配来获得类似的结果,但我想直接访问对象)

最佳答案

这与内容安全策略无关。我认为您正在将内容脚本注入(inject)网页并尝试访问网页中的变量。因为内容脚本是在一个孤立的世界中执行的,所以你不能直接这样做。参见 https://developer.chrome.com/trunk/extensions/content_scripts.html#execution-environment了解更多详情。

要访问网页中的变量(在您的情况下是必需的),您必须在页面中插入一个 <script> 标记。在该脚本中检索 Google Analytics ID,并与内容脚本 ( https://developer.chrome.com/trunk/extensions/content_scripts.html#host-page-communication ) 通信,让内容脚本将其发送回您的扩展程序。

这是一个简单的例子(免责声明:只是为了说明如何做。我自己没有测试。):

window.addEventListener("message", function(event) {
if (event.source != window)
return;
if (event.data.type && (event.data.type == "FROM_PAGE")) {
chrome.extension.sendMessage(...); // Send analytics ID (in event.data.googleAnalyticsId) to your extension here
}, false);
var script = document.createElement('script');
script.appendChild(document.createTextNode('window.postMessage({googleAnalyticsId: (window._gaq ? window._gaq._getAsyncTracker()._getAccount() : ""), type: "FROM_PAGE"}, "*");');
document.appendChild(script);

另请注意,chrome.extension.onRequest/sendRequest 已被弃用很长时间 (https://developer.chrome.com/trunk/extensions/whats_new.html#20)。您应该改用 onMessage/sendMessage。

关于javascript - 从 Chrome 扩展程序访问 Google Analytics window._gaq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15166510/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com