擬似カラーいるか
by
pacochi
2011-05-31 [2011/05/31 02:11:53]
http://q.hatena.ne.jp/1286370456 色はスターに準じています。
-
/*
* @title 擬似カラーいるか
* @description http://q.hatena.ne.jp/1286370456 色はスターに準じています。
* @include http://q.hatena.ne.jp
* @license MIT License
* @private リニューアルで使えなくなったのでプライベートにしました
*/
(function () {
if (location.hostname != "q.hatena.ne.jp") return;
var irukaImgBase = "http://img.f.hatena.ne.jp/images/fotolife/p/pacochi/20101007/";
var irukaImg = [
["20101007102324.png", "20101007102325.png", "20101007102327.png", "20101007102328.png", "20101007102326.png"],
["20101007102319.png", "20101007102320.png", "20101007102322.png", "20101007102323.png", "20101007102321.png"]
];
// ちょっとノーマルを多めに、紫をレアに
for (var i = 0; i < irukaImg.length; i++)
irukaImg[i] = irukaImg[i].concat(irukaImg[i].slice(0, 4), irukaImg[i].slice(0, 1));
var path = location.pathname;
var ansCI = function () {
if (isJinriki()) jinrikiCI();
if ($("neighbor-question")) neighborCI();
};
var jinrikiCI = function () {
var imgBy = Ten.Selector.getElementsBySelector("img.by", $("main"));
var irukaBy = null;
for (var i = 0; i < imgBy.length; i++) if (imgBy[i].src.match(/\/iruka\.gif/)) {
irukaBy = imgBy[i];
break;
}
if (irukaBy) {
// var n = Ten.Selector.getElementsBySelector("a.answer-number", $("read_answer_list")).length % 10;
var n = lastDigit(path);
irukaBy.src = irukaImgBase + irukaImg[0][n];
Ten.Selector.getElementsBySelector("div.answer-header", $("read_answer_list"))[0].style.backgroundImage = "url(" + irukaImgBase + irukaImg[1][n] + ")";
}
};
var neighborCI = function () {
var hasIruka = Ten.Selector.getElementsBySelector("li.has-iruka", $("neighbor-question"));
for (var i = 0; i < hasIruka.length; i++)
hasIruka[i].style.backgroundImage = "url(" + irukaImgBase + irukaImg[0][lastDigit(hasIruka[i].getElementsByTagName("a")[0].href)] + ")";
};
var listCI = function () {
var imgs = document.getElementsByTagName("img");
var url;
for (var i = 0; i < imgs.length; i++) if (imgs[i].src.match(/\/iruka\.gif/)) {
url = imgs[i].parentNode.href;
if (url) imgs[i].src = irukaImgBase + irukaImg[0][lastDigit(url.split("#")[0])];
}
// http://q.hatena.ne.jp/1286370456/273234/#i273238
if ($("usertable")) standIruka();
};
var standIruka = function () {
var aCSS = "display:block;float:left;width:24px;height:24px;text-align:center;vertical-align:bottom;";
var vCSS = "-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);margin-left:4px;";
var hCSS = "margin-top:8px;";
var myirukacell = Ten.Selector.getElementsBySelector("td.myirukacell");
if (myirukacell && myirukacell[0]) {
var myIruka = myirukacell[0].getElementsByTagName("img");
for (var i = 0; i < myIruka.length; i++) {
myIruka[i].parentNode.style.cssText = aCSS;
myIruka[i].style.cssText = (i % 10 == 0) ? vCSS : hCSS;
}
}
};
var otherCI = function () {
var imgs = document.getElementsByTagName("img");
for (var i = 0; i < imgs.length; i++) if (imgs[i].src.match(/\/iruka\.gif/))
imgs[i].src = irukaImgBase + irukaImg[0][Math.floor(Math.random() * irukaImg[0].length)];
};
var isJinriki = function () {
var qType = Ten.Selector.getElementsBySelector("img.by", $("main-inner"));
if (qType && qType[0] && qType[0].src.match(/jinriki/)) return true;
return false;
};
var lastDigit = function (str) {
return(parseInt(str.charAt(str.length - 1), 10));
};
// 質問
if (path.match(/^\/[0-9]+$/)) ansCI();
// 質問リスト, プロフィール
else if (path.match(/^\/(list|[^\/]+\/([a-z]+list|$))/)) listCI();
// まだ見ぬいるかの生息地
else otherCI();
})();
-
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。