2010-11-25
選択範囲に含まれるリンクのアドレスをコピー
tips | |
必要に迫られて書いた.
ext.add("copy-selected-links", function () { function getRanges(selection) { let ranges = []; for (let i = 0, rc = selection.rangeCount; i < rc; ++i) ranges.push(selection.getRangeAt(i)); return ranges; } function getLinks(range) { let container = range.commonAncestorContainer; return Array.slice(container.querySelectorAll("a[href]")); } function unique(array) { let hash = {__proto__:null}; for (let [, v] in Iterator(array)) hash[v] = true; return [v for ([v] in Iterator(hash))]; } let selection = content.getSelection(); let links = getRanges(selection) .map(getLinks) .reduce(function (l, c) l.concat(c)) .map(function (a) a.href); command.setClipboardText(unique(links).join("\n")); });
a.href とすると絶対パスが返ってきて, a.getAttribute("href") とすると相対パスが返ってくるような雰囲気だった.
コメント