TLMerge
FirefoxのuserChrome.js用スクリプト。ツイートへのリンク(Favstar上のツイートでもOK)を右クリックすると、メニューに「TLMerge で表示」が追加される。
(追記)リンクだけでなくツイート自体からも、またユーザーページからも使えるようにした。下が古いの。
(function (){ function getLinkStatusId(){ var re = /(twitter\.com|favstar\.fm\/users)\/(\w+)(\/status(es)?\/(\d+))?/; var url; if (gContextMenu.onLink){ url = gContextMenu.getLinkURL(); if (re.test(url)) return [RegExp.$2, RegExp.$5]; return null; } if (!gContextMenu.onImage){ url = content.location.href; if (re.test(url)) return [RegExp.$2, RegExp.$5]; return null; } return null; } var parent = document.getElementById("contentAreaContextMenu"); var ref = document.getElementById("context-sep-open"); var menu = document.createElement("menuitem"); parent.insertBefore(menu, ref); menu.setAttribute("label", "TLMerge \u3067\u8868\u793A"); menu.setAttribute("accesskey", "M"); menu.addEventListener("command", function (){ var a = getLinkStatusId(); if (!a) return; var url = "http://tlmerge.info/tlmerge.html#targets="; if (a[1]) url += a[1]; else url += a[0]; gBrowser.addTab(url, {relatedToCurrent: true}); }, false); parent.addEventListener("popupshowing", function (){ menu.hidden = !getLinkStatusId(); }, false); })();
(function (){ function getLinkStatusId(){ if (!gContextMenu.onLink) return ""; var url = gContextMenu.getLinkURL(); if (!/status\/(\d+)$/.test(url)) return ""; return RegExp.$1; } var parent = document.getElementById("contentAreaContextMenu"); var ref = document.getElementById("context-sep-open"); var menu = document.createElement("menuitem"); parent.insertBefore(menu, ref); menu.setAttribute("label", "TLMerge \u3067\u8868\u793A"); menu.setAttribute("accesskey", "M"); menu.addEventListener("command", function (){ gBrowser.addTab("http://tlmerge.info/tlmerge.html#targets=" + getLinkStatusId()); }, false); parent.addEventListener("popupshowing", function (){ menu.hidden = !getLinkStatusId(); }, false); })();