我正在尝试构建一个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
}


background.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?

最佳答案

我刚找到解决方案。发生的是,window.location.origin没有给我基本URL,而是给了我当前托管的原始URL,它是本地的。

因此,我改为使用activeTab.url并使用JS字符串操作,得到了所需的东西。

如果有人能更好地做到这一点,请告诉我。

09-20 22:46