非公開 擬似カラーいるか

  • /*
     * @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 です。

History

  1. 2011/05/31 02:11:53 - 2011-05-31
  2. 2010/10/07 17:24:18 - 2010-10-07
  3. 2010/10/07 13:31:49 - 2010-10-07
  4. 2010/10/07 13:22:41 - 2010-10-07
  5. 2010/10/07 13:08:52 - 2010-10-07