函数没有引用我的预定义变量

Function has no reference to my predefined variable

我是 JavaScript 的新手,所以我可能没有掌握正确的基础知识。 我正在尝试根据当前页面 URL 打开一个新页面。但是函数好像没有引用当前的URL.

它应该是一个简单的 Firefox Addon,查看 URL,替换某个部分并在新的点击中打开 "new" 页面。

browser.browserAction.onClicked.addListener(function() {
  var path = window.location.href
  var newPath = path.replace('www', 'test')
  var creating = browser.tabs.create({
    "url": "${newPath}"
  });
});

www.google.com 上应该会用 test.google.com 打开一个新的水龙头。相反,它打开了一个带有以下 URL=moz-extension://fde3def8-cf60-4536-b96b-1bf7ed91a8da/$%7BnewPath%7D 的选项卡。 看一下 URL 的末尾,我认为它没有引用变量。当用静态样本 URL 替换最后一行中的 newPath 变量时,例如www.facebook.com 效果很好。

JS 中的字符串插值仅适用于反引号而不适用于引号,如:"url": `${newPath}`

扩展页面,例如扩展 pop-up 页面,是单独的页面。它们 运行 在与当前打开的常规页面没有(或很少)连接的单独上下文中。

您的 path 是扩展名的 URL,显然恰好是“moz-extension://fde3def8-cf60-4536-b96b-1bf7ed91a8da/”。您正在尝试替换部分内容 URL 并在新选项卡中打开结果。

首先阅读扩展架构:

要完成您正在尝试做的事情,您可能必须首先使用 tabs.query({active: true}) 查询活动选项卡以获取其 URL。

异步执行注意事项:

许多与扩展相关的 API(包括 tabs.query)是异步的(promise-based 在 Firefox 中)。 Promises初学者可能有点难掌握。

你还混淆了字符串和模板字符串:

这也是不正确的:"url": "${newPath}"。它应该只是 "url": newPath。您似乎将常规字符串与 template strings 混淆了。