gpt4 book ai didi

javascript - 检查用户是否安装了 Chrome 扩展程序

转载 作者:IT王子 更新时间:2023-10-29 02:45:36 25 4
gpt4 key购买 nike

我正在构建一个 Chrome 扩展程序,为了让整个事情按照我希望的方式工作,我需要一个外部 JavaScript 脚本来检测用户是否安装了我的扩展程序。

例如:用户安装了我的插件,然后访问了一个带有我的脚本的网站。该网站检测到我的扩展程序已安装并相应地更新页面。

这可能吗?

最佳答案

Chrome 现在可以从网站向扩展程序发送消息。

因此在扩展 background.js(content.js 将不起作用)中添加如下内容:

chrome.runtime.onMessageExternal.addListener(
function(request, sender, sendResponse) {
if (request) {
if (request.message) {
if (request.message == "version") {
sendResponse({version: 1.0});
}
}
}
return true;
});

这将使您可以从网站调用电话:

var hasExtension = false;

chrome.runtime.sendMessage(extensionId, { message: "version" },
function (reply) {
if (reply) {
if (reply.version) {
if (reply.version >= requiredVersion) {
hasExtension = true;
}
}
}
else {
hasExtension = false;
}
});

然后您可以检查 hasExtension 变量。唯一的缺点是调用是异步的,因此您必须以某种方式解决这个问题。

编辑:如下所述,您需要向 manifest.json 添加一个条目,列出可以向您的插件发送消息的域。例如:

"externally_connectable": {
"matches": ["*://localhost/*", "*://your.domain.com/*"]
},

2021 年更新:chrome.runtime.sendMessage 如果扩展未安装或被禁用,将在控制台中抛出以下异常。

Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist

要解决此问题,请在 sendMessage 回调中添加此验证

if (chrome.runtime.lastError) {
// handle error
}

关于javascript - 检查用户是否安装了 Chrome 扩展程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6293498/

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