我已经创建了一个扩展,我正在尝试检测这个扩展是否存在于我的一个虚拟主机中。
以下是用于检测扩展是否存在的代码:(script.js
)
var detect = function(base, if_installed, if_not_installed) {
var s = document.createElement('script');
s.onerror = if_not_installed;
s.onload = if_installed;
document.body.appendChild(s);
s.src = base + '/manifest.json';
};
detect('chrome-extension://' + "myExtensionId", function() {alert('boom!');},
function() {alert("buf. nothin")});
当我在浏览器中打开虚拟主机时,它会提醒我:buf。nothin,并且在控制台日志中显示此错误:
- 铬的Denying load-extension://myExtensionId/manifest.json.资源必须列在web_accessible_Resources清单键中,才能由扩展之外的页面加载
如果我点击我创建的扩展,它会提醒boom,我不会收到错误,这意味着在扩展中它会检测到我的扩展,但在我的虚拟主机中它不会。
因此,检测扩展中是否存在扩展是可能的,但是否可以从网页中检测扩展?
如果您拥有该页面,则可以向扩展发送消息。如果它有响应,它就会被安装。文档:https://developer.chrome.com/extensions/messaging#external-网页
manifest.json
"externally_connectable": {
"matches": ["https://example.com/*"]
}
page.js
var id = "randomlettersfromwebstoreurl"
chrome.runtime.sendMessage(id, "installed?", function(response) {
if(response) {
// The extension is installed
} else {
// The extension is not installed or disabled
} })
扩展.js
chrome.runtime.onMessageExternal.addListener(function(request, sender, respond) {
if(request == "installed?") {
respond(true)
} })