Mixi ユーザー名付近にリンクを追加する
ユーザー名の近くに以下のリンクを追加する Firefox Greasemonkey スクリプト。
- 最近の日記
- 最近のコメント
// ==UserScript== // @name mixi_user_link_plus // @namespace http://example.com // @include http://mixi.jp/show_log.pl* // @include http://mixi.jp/view_bbs.pl?* // @include http://mixi.jp/view_diary.pl?* // ==/UserScript== (function(){ const URL_COMMENT = "http://mixi.jp/list_comment.pl?id="; const URL_DIARY = "http://mixi.jp/list_diary.pl?id="; var settings = [ // 日記 { site: 'view_diary', xpath: "//span[@class='commentTitleName']/a[1]", text: "日記", before: ' | ', after: null, id_pattern: "id=([0-9]+)$", url: URL_DIARY, target: "_blank", }, { site: 'view_diary', xpath: "//span[@class='commentTitleName']/a[1]", text: "最近のコメント", before: ' | ', after: null, id_pattern: "id=([0-9]+)$", url: URL_COMMENT, target: "_blank", }, // コミュニティ { site: 'view_bbs', xpath: "//dl[@class='commentContent01']/dt/a[1]", text: "<div>日記</div>", before: null, after: null, id_pattern: "id=([0-9]+)$", url: URL_DIARY, target: "_blank", }, { site: 'view_bbs', xpath: "//dl[@class='commentContent01']/dt/a[1]", text: "<div>最近のコメント</div>", before: null, after: null, id_pattern: "id=([0-9]+)$", url: URL_COMMENT, target: "_blank", }, // 足あと { site: 'show_log', xpath: "//span[@class='name']/a[1]", text: "【日記】", before: " ", after: null, id_pattern: "id=([0-9]+)$", url: URL_DIARY, target: "_blank", }, { site: 'show_log', xpath: "//span[@class='name']/a[1]", text: "【コメント】", before: null, after: null, id_pattern: "id=([0-9]+)$", url: URL_COMMENT, target: "_blank", }, /* { site: "", xpath: "//xxxx/a[1]", text: "", before: null, after: null, id_pattern: "id=([0-9]+)$", url: "", target: "_blank", } /**/ ]; for(var si = 0, sn = settings.length; si < sn; si++){ if(0 <= location.href.indexOf(settings[si].site)){ var nodes = xpath(settings[si].xpath); for(var i = 0, n = nodes.length; i < n; i++){ appendListCommentLink(nodes[i], settings[si].text, settings[si].before, settings[si].after, settings[si].id_pattern, settings[si].url, settings[si].target); } } } function xpath(query) { var r = new Array(); var ns = document.evaluate(query, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for(var i = 0, n = ns.snapshotLength; i < n; i++){ r.push(ns.snapshotItem(i)); } return r; } function appendListCommentLink(node, text, before, after, id_pattern, url, target){ //var re = new RegExp("id=([0-9]+)$"); var re = new RegExp(id_pattern); var id = (re.exec(node.href) || [])[1]; if(id){ if(before){ node.parentNode.appendChild(document.createTextNode(before)); } var link = document.createElement("a"); link.setAttribute("href", url + id); if(target){ link.target = target; } link.innerHTML = text; node.parentNode.appendChild(link); if(after){ node.parentNode.appendChild(document.createTextNode(after)); } } } })();