我正在創建一個「在此選項卡中打開鏈接」上下文菜單項,應該在右鍵單擊給定網頁上的任何鏈接時出現。我目前的代碼的最後一塊添加屬性的每一個環節:僅根據需要設置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