detect if Chrome extension content script has been injected / content script include guard

前端 未结 2 1608
误落风尘
误落风尘 2020-12-31 20:37

I want to execute a content script function whenever a tab is updated. The problem is that, sometimes the tab update is ajax (without a page reload), while still changing th

2条回答
  •  不知归路
    2020-12-31 21:10

    You can try sending a message to content script (Message Passing). If the content script successfully returns a response then it means that the content script is already there otherwise an empty response is returned, you can check for an empty response and inject the content script.

    Background:

    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
            if (response) {
                console.log("Already there");
            }
            else {
                console.log("Not there, inject contentscript");
            }
        });
    });
    

    ContentScript:

    chrome.runtime.onMessage.addListener(
        function(request, sender, sendResponse) {
            if (request.greeting == "hello")
                sendResponse({message: "hi"});
     });
    

提交回复
热议问题