0

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: ");
        }
    }
)
Zayn
  • 741
  • 1
  • 5
  • 22
  • [Google Chrome / Firefox do not see extension output in console](https://stackoverflow.com/a/38920982) – wOxxOm Nov 30 '20 at 11:44

1 Answers1

0

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

Ziv Adler
  • 169
  • 2
  • 11