从外部脚本确定 Chrome 扩展程序安装状态
在开发与外部 JavaScript 脚本交互的 Chrome 扩展程序时,您可能需要确定是否您的扩展程序安装在用户的浏览器上。此功能允许您相应地定制脚本的行为。
Chrome 引入了一项功能,使外部网站能够与扩展程序进行通信。通过将以下代码合并到扩展程序的后台脚本 (background.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 时,如果未安装扩展,将会抛出异常或禁用。要处理这种情况,请在 sendMessage 回调中添加以下验证:
if (chrome.runtime.lastError) { // handle error }
以上是如何从外部脚本确定 Chrome 扩展安装状态?的详细内容。更多信息请关注PHP中文网其他相关文章!