我试图使用alert(document.domain);
获得域名,但当我在网站上测试时,我没有获得正确的域名
我得到了"hiecjmnbaldlmopobbkifcelmAalcfib"这个奇怪的输出。
我也在清单中添加了这个
"content_scripts": [
{
"js": ["inject.js"]
}
],
警报(document.domain);是inject.js.中唯一的一行文本
我已经在popup.js
之后将这个<script type="text/javascript" src="inject.js">
</script>
合并到主html文件中
有没有想过为什么我没有得到正确的域名url?
谢谢!
如果你在弹出窗口、背景或选项页面中,有一种间接的方法可以获得页面的域。
您可以参考以下代码。
演示
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);// Outputs present active URL of tab
popup.html
注册popup.js
以超越CSP。
<html>
<head>
<script src="popup.js"></script>
</head>
<body></body>
</html>
popup.js
为DOM Content Loaded
添加了事件侦听器,并带来了用户所在选项卡的活动URL。
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);
}
});
输出
你会发现
fgbhocadghoeonlokakijhnlplgkolbg
作为console.log(document.domain)的输出;在所有扩展页和中
和
http://somedomain.com/
用于CCD_ 6输出。
但是,内容脚本输出始终是
http://somedomain.com/
参考文献
- 标签API
- 内容脚本