javascript google chrome扩展程序获取域名 [英] javascript google chrome extension getting domain name

查看:473
本文介绍了javascript google chrome扩展程序获取域名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图获得域名使用 alert(document.domain); 但我没有得到正确的域,当我在一个网站测试, / p>

我得到hiecjmnbaldlmopbbkifcelmaaalcfib这个奇怪的输出。





 content_scripts:[
{
js:[inject.js]

}
],

alert(document.domain);是inject.js中唯一的文本行。



我已经将< script type =text / javascriptsrc = inject.js> popup.js



后,将
< / script>

关于为什么我没有获取正确的网域网址的任何想法?



谢谢!

解决方案

如果您在弹出式窗口或背景或选项页面中,则有一种间接方法来获取页面的域。



以下代码作为参考。



演示



manifest.json



注册内容脚本,带有清单文件的背景和弹出脚本以及相关权限

  {
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); //输出tab的当前活动URL 



popup.html



注册 popup.js 超越CSP 。

 < html> 

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

< body>< / body>

< / html>



popup.js



添加事件监听器 DOM内容加载,并带来了用户所在的标签页的活动网址。

  document.addEventListener(DOMContentLoaded,function(){
console.log(document.domain); //它输出扩展名的控制台
chrome.tabs.query此方法输出活动URL
active:true,
currentWindow:true,
status:complete,
windowType:normal $ b},function(tabs){
for(tab in tabs){
console.log(tabs [tab] .url);
}
});
});



background.js



  console.log(document.domain); //它输出扩展的id到控制台
chrome.tabs.query({//此方法输出活动的URL
active:true,
currentWindow:true,
status:complete,
windowType:normal
},function(tabs){
for(tab in tabs){
console.log tabs [tab] .url);
}
});



输出



p>


fgbhocadghoeonlokakijhnlplgkolbg


作为console.log的输出(document.domain);在所有扩展页和




http://somedomain.com/




但是,内容脚本输出总是


http://somedomain.com/




参考




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

这篇关于javascript google chrome扩展程序获取域名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆