需要帮助为 firefox 附加组件创建多级上下文菜单
Need assistance with creating multilevel context menu for firefox Add-on
每当我点击美国 ID 时,它总是会带我到 CA ID 页面。
请帮我修改一下后台代码
谢谢。
manifest.json
{
"manifest_version": 2,
"name": "Amazon",
"description": "Search on Amazon",
"version": "1.0",
"icons": {
"48": "logo_48.jpg"
},
"permissions":["contextMenus"],
"background": {
"scripts": ["background.js"]
}
}
background.js
browser.contextMenus.create({
id: "US",
title: "A US",
contexts: ["selection"]
});
browser.contextMenus.create({
id: "CA",
title: "A CA",
contexts: ["selection"]
});
//add action listener to the context menu
browser.contextMenus.onClicked.addListener(contextMenuAction);
function contextMenuAction(info, tab) {
const url = "https://www.amazon.com/s?k=";
browser.tabs.create({url: url});
}
browser.contextMenus.onClicked.addListener(contextMenuAction);
function contextMenuAction(info, tab) {
const url = "https://www.amazon.ca/s?k=";
browser.tabs.create({url: url});
}
您向任何可能被单击的上下文菜单项添加了两个侦听器。所以,你有两个选择:
解决方案 #1
将函数传递给每个项目的 onclick
选项
browser.contextMenus.create({
id: "US",
title: "A US",
contexts: ["selection"],
onclick: function () {
browser.tabs.create({ url: "https://www.amazon.com/s?k=" })
}
})
// do the same for the other contextMenu item created
解决方案 #2
添加一个侦听器并使用 menuItemId 检查选择了哪个上下文菜单项 属性。
function contextMenuAction(info, tab) {
if (info.menuItemId === "US") {
browser.tabs.create({ url: "https://www.amazon.com/s?k=" })
}
if (info.menuItemId === "CA") {
browser.tabs.create({ url: "https://www.amazon.ca/s?k=" })
}
每当我点击美国 ID 时,它总是会带我到 CA ID 页面。
请帮我修改一下后台代码
谢谢。
manifest.json
{
"manifest_version": 2,
"name": "Amazon",
"description": "Search on Amazon",
"version": "1.0",
"icons": {
"48": "logo_48.jpg"
},
"permissions":["contextMenus"],
"background": {
"scripts": ["background.js"]
}
}
background.js
browser.contextMenus.create({
id: "US",
title: "A US",
contexts: ["selection"]
});
browser.contextMenus.create({
id: "CA",
title: "A CA",
contexts: ["selection"]
});
//add action listener to the context menu
browser.contextMenus.onClicked.addListener(contextMenuAction);
function contextMenuAction(info, tab) {
const url = "https://www.amazon.com/s?k=";
browser.tabs.create({url: url});
}
browser.contextMenus.onClicked.addListener(contextMenuAction);
function contextMenuAction(info, tab) {
const url = "https://www.amazon.ca/s?k=";
browser.tabs.create({url: url});
}
您向任何可能被单击的上下文菜单项添加了两个侦听器。所以,你有两个选择:
解决方案 #1
将函数传递给每个项目的 onclick
选项
browser.contextMenus.create({
id: "US",
title: "A US",
contexts: ["selection"],
onclick: function () {
browser.tabs.create({ url: "https://www.amazon.com/s?k=" })
}
})
// do the same for the other contextMenu item created
解决方案 #2
添加一个侦听器并使用 menuItemId 检查选择了哪个上下文菜单项 属性。
function contextMenuAction(info, tab) {
if (info.menuItemId === "US") {
browser.tabs.create({ url: "https://www.amazon.com/s?k=" })
}
if (info.menuItemId === "CA") {
browser.tabs.create({ url: "https://www.amazon.ca/s?k=" })
}