開いているタブ全部のタイトルとURLをクリップボードにコピーするuserChrome.jsスクリプト「Copy All URLs」
調べ物をしていて、ちょっと気になるwebサイトがいくつか見つかった時に、素早くそのURLをメモする為のスクリプトです。
目の前にあるいくつかのサイトを、人にメールしたり、後で読もうとちょっとメモして置きたい時などに、便利です。
今開いているタブ一つ分だけなら、アドレスバーからコピーも出来ますし、htmlのアンカータグ化してくれるアドオンやスクリプトもありますが、複数のタブをとなると、とても面倒になります。
ミーティングの前にちょっと下調べしておいて、参考サイトを事前にみんなにメールしておいたり、取り急ぎで調べたものでブックマークに入れる程ではないのにといった時に、毎回煩わしさを感じていたので作ってみました。
特徴
使い方
- タブの上で右クリック
- コンテキストメニューの「Copy All URLs」をクリック
- [text] Copy All URLs:テキスト形式
- [html] Copy All URLs:html形式
- エディタなどにペースト
CopyAllURLs.uc.js
はてなダイアリーでファイルのアップロード方法が分からなかったので、ソースコードをそのまま貼り付け。
// ==UserScript== // @name Copy All URLs // @namespace http://d.hatena.ne.jp/kanonji/ // @description copy all URLs on a window to your clipboard used from the context menu on a tab. // @include main // @author kanonji // @version 0.1.20081205 // @homepage http://d.hatena.ne.jp/kanonji/20081205/1228462464 // ==/UserScript== (function() { var templates = { 'html':{ 'header':'<html><head></head><body><dl>\n', 'body':'<dt>%title%</dt><dd><a href="%url%" target="_blank">%url%</a></dd>\n', 'footer':'</dl></body></html>' }, 'text':{ 'header':'', 'body':'%title%\n%url%\n\n', 'footer':'' } }; var htmlEscape = function(s) { s = s.replace(/&/g, "&"); s = s.replace(/>/g, ">"); s = s.replace(/</g, "<"); s = s.replace(/"/g, """); return s; }; var getTabs = function(){ var tabNodes = document.popupNode.parentNode.childNodes; var tabs = new Array; for (i=0;i<tabNodes.length;i++){ tabs.push({'title':tabNodes[i].label, 'url':gBrowser.getBrowserForTab(tabNodes[i]).contentWindow.location.href}); } return tabs; }; var formOutput = function(templateId, tabs){ var string = new String; var template = templates[templateId]; string += template.header; for(i=0;i<tabs.length;i++){ string += template.body.replace(/%title%/g, htmlEscape(tabs[i].title)).replace(/%url%/g, htmlEscape(tabs[i].url)); } return string += template.footer; } var putClipboard = function(string){ Cc["@mozilla.org/widget/clipboardhelper;1"] .getService(Ci.nsIClipboardHelper) .copyString(string); dump("[save tabs]"+"copied to Clipboard\n"); } var main = function(templateId){ var tabs = getTabs(); var output = formOutput(templateId, tabs); putClipboard(output); }; var menuitem1 = document.createElement("menuitem"); menuitem1.setAttribute("label", "[text] Copy All URLs"); menuitem1.addEventListener("command", function() { main('text'); }, false); var menuitem2 = document.createElement("menuitem"); menuitem2.setAttribute("label", "[html] Copy All URLs"); menuitem2.addEventListener("command", function() { main('html'); }, false); setTimeout(function() { gBrowser.mStrip.childNodes[1].appendChild(document.createElement("menuseparator")); gBrowser.mStrip.childNodes[1].appendChild(menuitem1); gBrowser.mStrip.childNodes[1].appendChild(menuitem2); }, 0); })();