我希望向显示的 Firefox 上下文菜单添加一个菜单项
仅当用户右键单击特定 URL 时。我有一个测试 url 的函数。
我曾经通过订阅“popupshowing”事件来做到这一点:
var item = document.getElementById("custom-menu-id");
if (item) // show only for specific links
item.hidden = gContextMenu.onLink && acceptableURL(gContextMenu.linkURL);
我现在尝试使用附加 SDK,但我无法再访问 gContextMenu。
文档中的这段代码对我不起作用:
var cm = require("sdk/context-menu");
cm.Item({
label: "Copy name to clipboard",
context: cm.URLContext("http://scholar.google*"),
contentScript: 'self.on("context", function(node) {return true; });'
});
在这里,我认为应该可以获得类似 node.URL 的东西并进行测试,
但它不起作用。也许有人可以建议如何从 sdk 访问 gContextMenu 或如何从节点或其他东西获取 URL。
此代码应仅在右键单击指向的链接时显示菜单项stackoverflow.com:
在你的主模块中main.js:
exports.main = function() {
require("sdk/context-menu").Item({
label: "stack overflow link",
context: require("sdk/context-menu").SelectorContext("a[href]"),
contentScriptFile: require("sdk/self").data.url("check-node.js"),
onMessage: function(msg){},
});
};
在您的内容脚本(或内容脚本文件;在这种情况下)检查-node.js):
self.on("click",function(node,data){
self.postMessage("click");
});
self.on("context", function(node){
if(node.href && node.href.match(/^https?:\/\/(\w+\.)*stackoverflow\.com(\/.*)?$/))return true; //show in context menu if return value is true.
});
回复:您的示例代码。你有URLContext
它决定了您的菜单项显示在哪些页面上以及此片段self.on("context", function(node) {return true; });
导致菜单项始终显示URLContext
条件满足。使用SelectorContext
反而。并如上所示测试 node.href,仅当您希望显示菜单项时才返回 true。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)