我正在尝试编写一个简单的扩展,它会带一个你右键单击的链接,重新格式化url并在外部应用程序中启动它。我有所有的工作都有一个例外。
我正在使用“popupshowing”监听器来推断右键单击的元素是否为链接,并分别在上下文菜单中显示或隐藏“启动”命令。我的叠加代码如下所示:
<menupopup id="contentAreaContextMenu">
<menuitem id="LinkOpener" label="LAUNCH" oncommand="LaunchIt(document.popupNode);" />
</menupopup>
像魅力一样工作,但根据文档,document.popupNode正在逐步淘汰,我应该使用menupopup的triggerNode。但是,我不能简单地将它传递给内联“oncommand”处理程序。
最好的方法是什么?我现在唯一能想到的就是去处理“popupshowing”事件的函数,用前面的元素引用删除旧的“命令”监听器并添加一个带有新引用的新命令,但感觉可能有一个更好的方法来做到这一点。 任何帮助将不胜感激。 谢谢! 卢卡
答案 0 :(得分:1)
解决:因为menuitem是menupopup的孩子,我可以这样做:
<menuitem oncommand="myFunc(this.parentNode.triggerNode);">
答案 1 :(得分:0)
你的函数LaunchIt传递了event参数,并从这个get event.relatedTarget或者我忘记但是event.Sometarget与document.popupNode相同。要探索它,在你的launchIt函数中输入console.log(event)然后查看浏览器控制台,然后单击该链接,它将打开变量查看器,在那里探索目标。
一定要分享你发现的东西,我不记得我是怎么做的,所以这将是一个很好的提醒
答案 2 :(得分:0)
我一直在寻找如何获得使用firefox(35.0)上下文菜单扩展菜单项的DOM元素,以及上述技术对我有用。我通过了
<menuitem oncommand="myFunc(this.parentNode.triggerNode);">
并使用
访问DOM元素 function(triggerNode) {
window.alert("triggerNode.tagName=" + triggerNode.tagName)