google-chrome - Chrome 扩展 : How to detect if an extension is installed using Content Scripts

标签 google-chrome google-chrome-extension inject content-script

我在查看了 stackoverflow 上的几个相关问题后提出了这个问题。我从 how to detect if an extension is installed 开始.我选择了在某些页面上使用内容脚本向主体添加 div 的方法。这是我如何做到的...

list .json

{
    "name": "Install Check",
    "content_scripts": [
        {
            "matches": ["http://host.com/*"],
            "js" : ["insert_node.js"]
        }
    ],
    "permissions": [
        "tabs", "host.com/*"
    ]
}

insert_node.js(内容脚本)

var insert_node = document.createElement('div');
insert_node.id = "HOST_SITE";
document.body.appendChild(insert_node);

主页

<html>
<head>
</head>
<body>
    <h1>This is a host site. Welcome!!!</h1>
    <script src="jquery.js"></script>
    <script src="notification.js"></script>
</body>
</html>

扩展安装脚本

$(document).ready(function() {
    if ($('#HOST_SITE').length > 0) {
        alert("you have our extension installed");
    } else {
        alert("not installed");
    }
});

我的问题是,在 chrome 可以将节点注入(inject) DOM 之前,总是弹出带有消息 not_installed 的警报。我在 manifest.json over here 中读到了 run_at 属性.但这也没有解决问题。我尝试了所有三个 document_startdocument_idledocument_end 值。我在这里做错了什么?

最佳答案

它看起来像是您自己的扩展程序和网站,在这种情况下使用 Inline Installation 会容易得多.

if (typeof chrome !== "undefined" && typeof chrome.app !== "undefined" && chrome.app.isInstalled) {
  // extension is installed.
}

关于google-chrome - Chrome 扩展 : How to detect if an extension is installed using Content Scripts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9309068/

相关文章:

javascript - 将消息从 Chrome 扩展程序传递到网页

jersey - 如何将 bean 注入(inject) JAX RS 资源?

jsf - CDI @Produces 具有多个属性文件

wpf - 在 WPF 应用程序中注入(inject)鼠标输入

javascript - 从 chrome 扩展程序传递大 blob 或文件

linux - Tiltbrush Poly 无法在 Linux 中工作

javascript - 是否可以检测到 chrome 应用程序内部?

javascript - 在 chrome 中工作时 string.contains() 不存在

javascript - 如何使用 Chrome Extension Dev 检查页面中某种类型的元素有多少

google-chrome-extension - 检查弹出窗口是否删除了扩展;调试控制台吃扩展表单元素输入