【问题标题】:Can I detect if an extension exists from a Web Page?我可以检测网页中是否存在扩展程序吗?
【发布时间】:2016-04-13 00:29:37
【问题描述】:

我创建了一个扩展,我正在尝试检测这个扩展是否存在于我的一个虚拟主机中。

这是检测是否存在扩展的代码:(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。没什么 并且在控制台日志中出现此错误:

  • 拒绝加载 chrome-extension://myExtensionId/manifest.json。资源必须列在 web_accessible_resources 清单键中才能被扩展程序之外的页面加载

如果我单击我创建的扩展程序,它会发出警报 boom 并且我没有收到任何错误,这意味着它在扩展程序中检测到我的扩展程序,但在我的虚拟主机中它没有。

因此,可以检测扩展中是否存在扩展,但是可以检测网页中是否存在扩展?

【问题讨论】:

  • 错误信息清楚地解释了the problem is 的含义。但我建议使用@Daniel 回答中的方法
  • 即使我在manifest.json 中执行此操作,此错误消息仍然存在:"web_accessible_resources": [ "/*" ]
  • 我不认为这是一个有效的 glob。试试[ "*.json", "scripts/*.js" ] 或类似的
  • 终于成功了! manifest.json 没有配置好!在此处检查配置:manifest

标签: javascript google-chrome-extension


【解决方案1】:

如果您拥有该页面,则可以向扩展程序发送消息。如果它响应,它已安装。文档:https://developer.chrome.com/extensions/messaging#external-webpage

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
} })

extension.js

chrome.runtime.onMessageExternal.addListener(function(request, sender, respond) {
 if(request == "installed?") {
  respond(true)
} })

【讨论】:

  • 我终于想通了。在manifest.json -> matches 我有<all_urls>。而不是这个我放了例如 www.facebook.com 并且它起作用了。当我在新标签中输入 facebook 时,chrome 它会检测我的扩展程序是否已安装。 manifest.json: "content_scripts": [ { "matches": ["https://www.facebook.com/"], "js": [ "third/jquery-1.11.3.js", "script.js"], "run_at" : "document_start" } ],
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
相关资源
最近更新 更多