- エントリページの「トラックバック - http://anond.hatelabo.jp/〜」と書いてあるところの後ろに「すべて開く/閉じる」ボタンをつける
- ボタンを押すとトラックバックの内容をすべて開く(開いていたらすべて閉じる)
(function(){
var refererlist = xe()("descendant::div["+className('refererlist')+"]", 0);
if (!refererlist) return;
var rlXEval = xe(refererlist);
var open = false;
var basesrc = "http://anond.hatelabo.jp/images/common/";
var src = [basesrc+"open.gif", basesrc+"close.gif"];
var onclick = function(e){
rlXEval("descendant::li/a[@href='#']", click);
open = !open;
e.currentTarget.childNodes[1].src = src[Number(open)];
}
var style = "cursor: pointer";
rlXEval("div["+className('caption')+"]", 0).appendChild(
ce("span", {style: style, onclick: onclick}, [
" ",
ce("img", {src: src[0]}),
"\u3059\u3079\u3066\u958b\u304f/\u9589\u3058\u308b",
])
);
function click(element){
var e = document.createEvent("MouseEvents");
e.initEvent("click", true, true);
element.dispatchEvent(e);
}
function ce(name, attrs, contents){
var element = document.createElement(name);
if (attrs) for (a in attrs) {
if (a.indexOf("on") == 0 && attrs[a] != "string") {
element.addEventListener(a.slice(2), attrs[a], false);
} else element.setAttribute(a, attrs[a]);
}
if (contents) {
if (typeof contents.length != "number" || typeof contents == "string") {
contents = [contents];
}
for (var i = 0, len = contents.length, c; i < len; i++) {
c = contents[i];
if (typeof c.nodeType != "number") c = document.createTextNode(String(c));
element.appendChild(c);
}
}
return element;
}
function className(name){
return "contains("+
"concat(' ',normalize-space(@class),' '), concat(' ','"+name+"',' ')"+
")";
}
function xe(c, r){
c = c || document;
var d = (c.nodeType == 9) ? c : c.ownerDocument;
return function evaluate(expr, fn){
var result = d.createExpression(expr, r).evaluate(c, 7, null);
if (typeof fn == "number") {
return result.snapshotItem(fn < 0 ? fn+result.snapshotLength : fn);
} else {
for (var i = 0, len = result.snapshotLength; i < len; i++) {
if (fn(result.snapshotItem(i), i) === false) break;
}
}
}
}
})();