Check whether user has a Chrome extension installed

前端 未结 16 2071
一向
一向 2020-11-22 08:50

I am in the process of building a Chrome extension, and for the whole thing to work the way I would like it to, I need an external JavaScript script to be able to detect if

16条回答
  •  粉色の甜心
    2020-11-22 09:07

    Chrome now has the ability to send messages from the website to the extension.

    So in the extension background.js (content.js will not work) add something like:

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

    This will then let you make a call from the website:

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

    You can then check the hasExtension variable. The only drawback is the call is asynchronous, so you have to work around that somehow.

    Edit: As mentioned below, you'll need to add an entry to the manifest.json listing the domains that can message your addon. Eg:

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

提交回复
热议问题