gpt4 book ai didi

javascript - 尽快将变量从 chrome 扩展程序传递到网页

转载 作者:行者123 更新时间:2023-11-30 13:24:40 28 4
gpt4 key购买 nike

我正在尝试检测我的 chrome 扩展是否使用在我的网站上执行的 js 安装。我找到了一些示例,有些我什至不理解或者无法使它们起作用。我尝试过的工作是向 DOM 添加元素或修改某些 css 属性。例如:

在我的扩展背景页面上,我有:

function changeBG(tab){
chrome.tabs.executeScript(tab.id, {
code: ' document.body.bgColor="red" '
});
}

chrome.tabs.onUpdated.addListener(changeBG);

在我的网站上我有:

<script>
alert(document.body.bgColor);
</script>

背景确实变红了,但是 .bgColor 为空,因为我尝试在页面开始加载后立即在我的网站代码顶部读取它。页面加载后我可以阅读它并返回“红色”。 (如果将元素注入(inject)页面然后尝试读取 innerHTML 或元素的属性,也会发生同样的事情)。

但我不想等待 onload 或任何东西,因为我的内容取决于是否安装了扩展。

我也尝试过从扩展内容中加载图像的方法,但这又是一种间接的异步?方法。

我不想“交换”内容,我想知道是否安装了扩展程序,然后再继续在我的网站上加载任何其他内容

有人知道我该怎么做吗?

最佳答案

据我了解,javascript 检查对您来说执行得太迟了,因为网页内容已由浏览器处理。如果你想知道在加载任何内容之前是否启用了扩展,你应该在服务器端检查它。这样做的方法是让您的扩展程序将一些签名附加到浏览器发送到服务器的 header 中。然后,如果存在签名,您将知道请求发件人安装了您的扩展,您将能够返回正确的内容。描述了 header 操作 here .您可能需要使用它:chrome.webRequest.onBeforeSendHeaders.addListener

关于javascript - 尽快将变量从 chrome 扩展程序传递到网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8936477/

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