函数没有引用我的预定义变量
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 并在新选项卡中打开结果。
首先阅读扩展架构:
- Anatomy of an extension
- Achitecture of extensions(对于Chrome,但概念是
相同)
要完成您正在尝试做的事情,您可能必须首先使用 tabs.query({active: true})
查询活动选项卡以获取其 URL。
异步执行注意事项:
许多与扩展相关的 API(包括 tabs.query
)是异步的(promise-based 在 Firefox 中)。 Promises初学者可能有点难掌握。
你还混淆了字符串和模板字符串:
这也是不正确的:"url": "${newPath}"
。它应该只是 "url": newPath
。您似乎将常规字符串与 template strings 混淆了。
我是 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 并在新选项卡中打开结果。
首先阅读扩展架构:
- Anatomy of an extension
- Achitecture of extensions(对于Chrome,但概念是 相同)
要完成您正在尝试做的事情,您可能必须首先使用 tabs.query({active: true})
查询活动选项卡以获取其 URL。
异步执行注意事项:
许多与扩展相关的 API(包括 tabs.query
)是异步的(promise-based 在 Firefox 中)。 Promises初学者可能有点难掌握。
你还混淆了字符串和模板字符串:
这也是不正确的:"url": "${newPath}"
。它应该只是 "url": newPath
。您似乎将常规字符串与 template strings 混淆了。