我正在创建一个“在此选项卡中打开链接”上下文菜单项,应该在右键单击给定网页上的任何链接时出现。我目前的代码的最后一块添加属性的每一个环节:仅根据需要设置contextmenu属性会更好吗?
for (let node of document.getElementsByTagName("a")) {
node.setAttribute("contextmenu", menu.id);
}
它发生,我认为我可以在属性只添加到那些真正右键单击的链接,就像这样:
for (let node of document.getElementsByTagName("a")) {
node.oncontextmenu = function() {
node.setAttribute("contextmenu", menu.id);
};
}
以某种方式做它有什么好处吗?
考虑事件代表团:将一个* contextmenu *监听器放在所有链接的父代,然后检查事件来自哪里并从那里去。如果你没有很多链接,它真的很重要吗?哦,并不是所有的A元素都是链接,有些可能是锚点。文档中的所有链接都由* document.links *集合给出,所以'for(链接document.links)...'。 ;-)至少用于'document.links'的 – RobG
+1。 @阴影可能是正确的,我正在推翻这一点,但我仍然好奇:你认为什么是“多”链接?看起来我在一些页面上可能有多达300个。 – practik
@RobG,你说的对,事件代表团就是要走的路。我相应地重写了整个事情,它效果更好。如果可以的话,我会选择您的评论作为答案 - 想将其发布为一个,这样我就可以? – practik