m2O

2009/10/17 (土)

選択範囲のリンクをコピー

|  選択範囲のリンクをコピー - m2O を含むブックマーク

だれかがやってそうだったけどすぐには見つけられなかったので。

[Link Selection Popup Menu]
item, "選択範囲のリンクをコピー" = Go to page, "javascript:(function(){var links=getLinksInSelection();prompt('',links.join('\n'));function getLinksInSelection() {var links = [];var selection = getSelection();var contentRange = document.createRange();for (var i = 0; i < selection.rangeCount; i++) {var range = selection.getRangeAt(i);if (range.collapsed) continue;var startNode = range.startContainer;var startExpr = 'count(preceding::*[@href])';if (startNode.nodeType == Node.ELEMENT_NODE) {if (range.startOffset < startNode.childNodes.length)startNode = startNode.childNodes[range.startOffset];elsestartExpr += ' + count(descendant::*[@href])';}var startResult = document.evaluate(startExpr, startNode, null,XPathResult.NUMBER_TYPE, null);var endNode = range.endContainer;var endExpr = 'ancestor::*[@href] | preceding::*[@href]';if (endNode.nodeType == Node.ELEMENT_NODE) {if (range.endOffset < endNode.childNodes.length)endNode = endNode.childNodes[range.endOffset];elseendExpr += ' | descendant-or-self::*[@href]';}var endResult = document.evaluate(endExpr, endNode, null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);var j = startResult.numberValue;var length = endResult.snapshotLength;if (j < length) {var lastNode = endResult.snapshotItem(j);while (lastNode.lastChild)lastNode = lastNode.lastChild;contentRange.selectNodeContents(lastNode);contentRange.setStart(range.startContainer, range.startOffset);if (contentRange.collapsed) j++;}if (j < length) {var firstNode = endResult.snapshotItem(length - 1);while (firstNode.firstChild)firstNode = firstNode.firstChild;contentRange.selectNodeContents(firstNode);contentRange.setEnd(range.endContainer, range.endOffset);if (contentRange.collapsed) length--;}for (; j < length; j++)links.push(endResult.snapshotItem(j));}return links;}})()" & Delay, 100 & Copy & Cancel

[Hotclick Popup Menu]
Item, "選択範囲のリンクをコピー" = Go to page, "javascript:(function(){var links=getLinksInSelection();prompt('',links.join('\n'));function getLinksInSelection() {var links = [];var selection = getSelection();var contentRange = document.createRange();for (var i = 0; i < selection.rangeCount; i++) {var range = selection.getRangeAt(i);if (range.collapsed) continue;var startNode = range.startContainer;var startExpr = 'count(preceding::*[@href])';if (startNode.nodeType == Node.ELEMENT_NODE) {if (range.startOffset < startNode.childNodes.length)startNode = startNode.childNodes[range.startOffset];elsestartExpr += ' + count(descendant::*[@href])';}var startResult = document.evaluate(startExpr, startNode, null,XPathResult.NUMBER_TYPE, null);var endNode = range.endContainer;var endExpr = 'ancestor::*[@href] | preceding::*[@href]';if (endNode.nodeType == Node.ELEMENT_NODE) {if (range.endOffset < endNode.childNodes.length)endNode = endNode.childNodes[range.endOffset];elseendExpr += ' | descendant-or-self::*[@href]';}var endResult = document.evaluate(endExpr, endNode, null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);var j = startResult.numberValue;var length = endResult.snapshotLength;if (j < length) {var lastNode = endResult.snapshotItem(j);while (lastNode.lastChild)lastNode = lastNode.lastChild;contentRange.selectNodeContents(lastNode);contentRange.setStart(range.startContainer, range.startOffset);if (contentRange.collapsed) j++;}if (j < length) {var firstNode = endResult.snapshotItem(length - 1);while (firstNode.firstChild)firstNode = firstNode.firstChild;contentRange.selectNodeContents(firstNode);contentRange.setEnd(range.endContainer, range.endOffset);if (contentRange.collapsed) length--;}for (; j < length; j++)links.push(endResult.snapshotItem(j));}return links;}})()" & Delay, 100 & Copy & Cancel

選択範囲のリンクを取得する方法は、なんとさんの選択範囲のリンクを取得する: Days on the Moon

JavaScript からの入力をクリップボードにコピーする方法は、あまたさんが書いてくれた Extension:Opera de MakeLink - Opera Wiki


f:id:miya2000:20091017083538p:image:w325:right

wnp は Ctrl + v で動画のリンクを貼り付けられるので、例えばボカ路地なんかを開いて Ctrl+a で全選択して"選択範囲のリンクをコピー"をした後、wnp に Ctrl+v すると、


f:id:miya2000:20091017083537p:image:w325:right

コピーしたリンクの中の動画のリンクがプレイリストに追加されます。



Opera にはリンクパネルというものもあって、上記と同様にリンクのコピーができる上に、「クイック検索」で絞り込むことができて便利です。

amatanoyoamatanoyo2009/10/17 13:52そのまま使わせて貰いましたよ( ̄ー ̄)

miya2000miya20002009/10/17 14:35こちらもほぼそのまま使わせて貰いましたよ( ̄ー ̄)

トラックバック - http://orera.g.hatena.ne.jp/miya2000/20091017