javascript - 如何在 Google Chrome 扩展程序中获取基本 URL
问题描述
我正在尝试构建一个 chrome 扩展,它将获取调用它的页面的基本 URL,然后与某些字符串连接并打开一个新选项卡。
所以,到目前为止,我已经尝试了以下代码:
清单.JSON
{
"name": "TEST APP",
"version": "1",
"browser_action":
{
"default_icon": "pepe.jpg"
},
"background":
{
"scripts": ["background.js"]
},
"permissions": ["tabs", "http://*/*", "https://*/*"],
"manifest_version": 2
}
背景.js:
chrome.browserAction.onClicked.addListener(function(activeTab){
var base_url = window.location.origin;
var newURL = base_url + "/MyPrivateURLString";
chrome.tabs.create({ url: newURL });
});
当我加载并测试时,基本 URL 是错误的,类似于:
chrome-extension://lpcamgghpaemdddeopfgacgkdcmgdnfn/MyPrivateURLString
如果我硬编码一个完整的 URL,那么它工作正常。为什么我无法动态使用基本 URL?
解决方案
您使用activeTab.url
而window.location.origin
不是使用字符串操作是正确的,但您可以执行以下操作:
chrome.browserAction.onClicked.addListener(function(activeTab){
var url = activeTab.url; //Assuming it is working fine as per your post
var urlObj = new URL(url);
console.log('---urlObj--', urlObj);
});
这样您就可以获得 URL 的所有属性。例如:对于当前 URL,您将获得以下详细信息:
hash: ""
host: "stackoverflow.com"
hostname: "stackoverflow.com"
href: "https://stackoverflow.com/questions/56509769/how-to-get-base-url-in-google-chrome-extension"
origin: "https://stackoverflow.com"
password: ""
pathname: "/questions/56509769/how-to-get-base-url-in-google-chrome-extension"
port: ""
protocol: "https:"
search: ""
searchParams: URLSearchParams{}
username: ""
推荐阅读
- kubernetes-helm - 如何删除超过 1 个月的 helm 版本
- r - 如何循环回归并获取变量的原始名称?
- java - SWT 复合调整大小
- html - 3 行 DIV 的 CSS,其中页眉和页脚将高度缩小到内容
- javascript - 在 Epic 结束时使用 redux-observables 调度操作
- javascript - 将文件转换为 Base64
- javascript - 如何在 JavaScript 中的类内编辑数组内对象的值?
- python - 使用 `Series.at` 进行多索引分配 ValueError:零大小数组到没有标识的缩减操作最大值
- typo3 - TYPO3 FormFactory 如何在自定义验证器中访问多个值?
- javascript - 味精未定义 | 不和谐.js | 节点