简体   繁体   中英

javascript google chrome extension getting domain name

I tried to get the domain name using alert(document.domain); But i'm not getting the right domain when I test it out in a site,

I get "hiecjmnbaldlmopbbkifcelmaaalcfib" this weird output.

I have added this in the manifest too

  "content_scripts": [
        {
        "js": ["inject.js"]

        }
  ],

alert(document.domain); is the only line of text inside inject.js.

And I've incorporated this <script type="text/javascript" src="inject.js"> </script> into the main html file after popup.js

Any thoughts on why I'm not getting the correct domain url?

Thanks!

If you are in popup or background or options page, there is an indirect approach for obtaining domain of page.

You can refer to following code as a reference.

Demonstration

manifest.json

Registered content scripts, background and popup scripts with manifest file along with relevant permissions

{
    "name": "Domain Name",
    "description": "http://stackoverflow.com/questions/14796722/javascript-google-chrome-extension-getting-domain-name",
    "version": "1",
    "manifest_version": 2,
    "content_scripts": [
        {
            "matches": [
                "<all_urls>"
            ],
            "js": [
                "myscript.js"
            ]
        }
    ],
    "browser_action": {
        "default_popup": "popup.html"
    },
    "background": {
        "scripts": [
            "background.js"
        ]
    },
    "permissions": [
        "tabs",
        "<all_urls>"
    ]
}

myscript.js

console.log(document.domain);// Outputs present active URL of tab

popup.html

Registered popup.js to surpass CSP.

<html>

    <head>
        <script src="popup.js"></script>
    </head>

    <body></body>

</html>

popup.js

Added Event Listener for DOM Content Loaded , and brought active URL of tab where user is on.

document.addEventListener("DOMContentLoaded", function () {
    console.log(document.domain);//It outputs id of extension to console
    chrome.tabs.query({ //This method output active URL 
        "active": true,
        "currentWindow": true,
        "status": "complete",
        "windowType": "normal"
    }, function (tabs) {
        for (tab in tabs) {
            console.log(tabs[tab].url);
        }
    });
});

background.js

console.log(document.domain); //It outputs id of extension to console
chrome.tabs.query({ //This method output active URL 
    "active": true,
    "currentWindow": true,
    "status": "complete",
    "windowType": "normal"
}, function (tabs) {
    for (tab in tabs) {
        console.log(tabs[tab].url);
    }
});

Output

You will find

fgbhocadghoeonlokakijhnlplgkolbg

as output for console.log(document.domain); in all extension pages and

and

http://somedomain.com/

for tabs.query() output.

However, Content script output is always

http://somedomain.com/

References

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