- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
早上好,我一直在尝试自己修复这个错误,但我还不能完全理解它出了什么问题。总结:
list .JSON:
{
"name": "My Chrome Extension",
"description": "Bookmarks in a Chrome Extension",
"version": "0.1",
"permissions": ["contextMenus","tabs"],
"background": {
"scripts": ["background.js"]
},
"manifest_version": 2
}
background.JS:
// A generic onclick callback function.
function genericOnClick(info, tab) {
console.log("item " + info.menuItemId + " was clicked");
console.log("info: " + JSON.stringify(info));
console.log("tab: " + JSON.stringify(tab));
}
// Create one test item for each context type.
var contexts = ["page", "selection", "link", "editable", "image", "video",
"audio"
];
for (var i = 0; i < contexts.length; i++) {
var context = contexts[i];
var title = "Quick Access";
var id = chrome.contextMenus.create({
"title": title,
"contexts": [context],
"onclick": genericOnClick
});
console.log("'" + context + "' item:" + id);
}
// Create a parent item and two children.
var parent1 = chrome.contextMenus.create({
"title": "Essentials"
});
var child1 = chrome.contextMenus.create({
"title": "Google",
"parentId": parent1,
"onclick": genericOnClick
});
chrome.contextMenus.onClicked.addListener(onClickHandlerGoogle);
function onClickHandlerGoogle(info, tab) {
var urlgoogle = "https://www.google.com/";
window.open(urlgoogle, '_blank');
};
var child2 = chrome.contextMenus.create({
"title": "CNN",
"parentId": parent1,
"onclick": genericOnClick
});
chrome.contextMenus.onClicked.addListener(onClickHandlerCNN);
function onClickHandlerCNN(info, tab) {
var urlCNN = "https://www.cnn.com";
window.open(urlCNN, '_blank');
};
对于您认为错误的任何想法,我们将不胜感激!
更新 - background.JS 现在看起来像这样:**
// A generic onclick callback function.
function genericOnClick(info, tab) {
console.log("item " + info.menuItemId + " was clicked");
console.log("info: " + JSON.stringify(info));
console.log("tab: " + JSON.stringify(tab));
}
// Create one test item for each context type.
var contexts = ["page","selection","link","editable","image","video",
"audio"];
for (var i = 0; i < contexts.length; i++) {
var context = contexts[i];
var title = "Quick Access";
var id = chrome.contextMenus.create({"title": title, "contexts":[context],
"onclick": genericOnClick});
console.log("'" + context + "' item:" + id);
}
// Create a parent item and two children.
var parent1 = chrome.contextMenus.create({"title": "Essentials"});
var child1 = chrome.contextMenus.create({
"id": "google",
"title": "Google",
"parentId": parent1,
"onclick": genericOnClick
});
var child2 = chrome.contextMenus.create({
"id": "cnn",
"title": "CNN",
"parentId": parent1,
"onclick": genericOnClick
});
function clickHandler(info, tab) {
var url;
switch(info.id) {
case "google":
url = "https://www.google.com";
break;
case "cnn":
url = "https://www.cnn.com";
break;
}
if (url) {
window.open(url, "_blank");
}
}
chrome.contextMenus.onClicked.addListener(clickHandler);
这些更改使 Chrome 能够无错误地运行扩展程序,但是,它根本不会打开链接。我目前仍在努力解决这个问题,我非常感谢用户提出更改建议的时间。
如果您发现一些看起来很奇怪的东西,请务必告诉我!
最佳答案
你不应该有多个听众。当您从菜单中选择时,它们都会运行,因为没有任何东西可以将它们附加到特定的菜单项。
只需定义一个监听器,它就会检查正在为哪个菜单项运行并打开相应的页面。您需要向菜单项添加一个 id
属性,以便您可以对此进行调度。
var child1 = chrome.contextMenus.create({
"id": "google",
"title": "Google",
"parentId": parent1,
"onclick": genericOnClick
});
var child2 = chrome.contextMenus.create({
"id": "cnn",
"title": "CNN",
"parentId": parent1,
"onclick": genericOnClick
});
function clickHandler(info, tab) {
var url;
switch(info.menuItemId) {
case "google":
url = "https://www.google.com";
break;
case "cnn":
url = "https://www.cnn.com";
break;
}
if (url) {
window.open(url, "_blank");
}
}
chrome.contextMenus.onClicked.addListener(clickHandler);
关于javascript - 无论我选择哪个选项,Chrome 扩展都会打开 contextMenus 中的所有指定链接。我怎样才能避免这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41558250/
如果 contextMenu 重叠,是否有办法排除其中一种类型? 示例: 我有两个上下文项,可编辑和选择。 在这两种类型匹配的情况下,(可编辑内的选择) Chrome 为这两个操作提供了子菜单。 我只
我正在开发一个大量使用上下文菜单的 Google Chrome 扩展程序,我想让某些菜单项仅在某些域上可用。 目前,我正在使用 chrome.tabs.onUpdated 和 chrome.tabs.
我正在使用 chrome.contextMenus.create 函数在我的 Chrome 扩展程序中创建上下文菜单。但它创造了额外的选择。 我在我的 manifest.json 文件中授予了权限,在
我正在使用事件页面!并且需要创建带有子菜单的上下文菜单(深树)。 它有多深取决于用户数据。并且该上下文菜单的创建可能非常频繁,因为它取决于用户的操作。我可以通过一些逻辑来降低这些更新的频率,但它仍然可
这个问题已经有答案了: Dynamic extension context menu that depends on selected text (2 个回答) 已关闭 7 年前。 我正在尝试根据选择
这个问题在这里已经有了答案: TypeError: [API] is undefined in content script or Why can't I do this in a content
我正在开发 Mozilla WebExtension。我只想将 JavaScript 文件注入(inject)到我单击使用 contextMenus.create() 创建的上下文菜单选项的框架中。
我正在为自己开发一个 Google Chrome 扩展程序。它向每个页面上图像的右键单击上下文菜单添加了一个额外的菜单项。 目前,我的扩展没有问题,但是当我检查控制台日志时,我看到了这个错误日志: U
这是我的 contextMenus.create 函数,它抛出无法读取未定义的创建属性 错误。 chrome.contextMenus.create({ "title": "Buzz This"
我尝试创建一个简单的 chrome 扩展来在 chrome 的上下文菜单中添加一个选项。 这是我的 manifest.json { "manifest_version": 2, "back
使用 ScenicView ,我希望能够检查诸如 ContextMenu 之类的东西s 或 ComboBox 的内部,但是(正如他们应该的那样)在上述检查发生之前它们就消失了: 除了将每个控件的行为更
我在 Button 上有一个 ContextMenu,我想在 MouseEnter 事件上打开它,而不是在默认的右侧-点击事件。这是我的 XAML:
早上好,我一直在尝试自己修复这个错误,但我还不能完全理解它出了什么问题。总结: 我制作了一个 Chrome 扩展程序,我想将其用作书签栏。扩展中的链接将由我自己提供。它们都是在线托管的 URL。 为了
我指的是 https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/contextMenus/onClicked .我已使用此示例中的
我已经为 Firefox(52.2.1 32 位)构建了一个小型 WebExtension,主要基于 example provided by the Mozilla Developers Networ
我正在创建我的第一个 Chrome 扩展程序,我需要一些帮助。我认为一切正常,除了我无法获取选项卡的当前 URL。 var menu = chrome.contextMenus.create({
作为标题,如何将修改应用到另一个页面,不同于背景? list : { "name": "First Extension", "version": "1.0", "descrip
我正在尝试创建一个 chrome 扩展。目前我正准备为我的扩展创建上下文菜单,当我点击它时它会做一些事情。所以,下面我创建父级的谷歌文档。 chrome.contextMenus.create({ti
我正在尝试编写我的第一个浏览器扩展程序,但我似乎无法通过单击上下文菜单项来触发单击处理程序。 console.log 调用似乎没有向控制台吐出任何东西,我尝试使用 alert() 以防万一“背景”脚本
我是一名优秀的程序员,十分优秀!