javascript google chrome extension getting domain name

前端 未结 1 820
梦毁少年i
梦毁少年i 2021-01-03 07:35

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 \"hiecjmnbaldlmop

相关标签:
1条回答
  • 2021-01-03 07:46

    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

    • Tabs API
    • Content Scripts
    0 讨论(0)
提交回复
热议问题