简体   繁体   中英

Response function not working in popup.js chrome extension

I'm making a small chrome extension. Right now I'm checking for website language and trying to show that language in popup.html but response function is not working and I'm unable to show language in popup. Any help?

popup.html

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <h1>Popup</h1>
        <script src="./scripts/popup.js"></script>
    </body>
</html>

popup.js

chrome.runtime.sendMessage({type: "getLanguage"}, function(selectedLanguage) {
    // This function is not working
    if(typeof selectedLanguage == "undefined") {
    } else {
        console.log(selectedLanguage)
    }
})

content-script.js // Content script

const pageLanguage = document.querySelector("html").getAttribute('lang');
const language = languages.find(lang => lang.code === pageLanguage); // languages is an array which have all language codes

chrome.runtime.sendMessage({type: 'setLanguage', language: language.name});

background.js

// Background script

// Example of Chrome API use:
chrome.tabs.onCreated = () => {
    console.log('New tab opened');
}

chrome.runtime.onMessage.addListener(
    function (message, sender, sendResponse) {
        switch (message.type) {
            case 'setLanguage':
                lang = message.language;
                break;
            case 'getLanguage':
                console.log(lang);
                sendResponse(lang);
                break;
        
            default:
                console.error("Unrecognised message: ");
        }
    }
)

Try the long lived connections ports which is better for talking between the contentscript and the background page

https://developer.chrome.com/extensions/messaging#connect

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM