javascript google chrome extension getting domain name

前端 未结 1 886
梦毁少年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": [
                    ""
                ],
                "js": [
                    "myscript.js"
                ]
            }
        ],
        "browser_action": {
            "default_popup": "popup.html"
        },
        "background": {
            "scripts": [
                "background.js"
            ]
        },
        "permissions": [
            "tabs",
            ""
        ]
    }
    

    myscript.js

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

    popup.html

    Registered popup.js to surpass CSP.

    
    
        
            
        
    
        
    
    
    

    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)
提交回复
热议问题