[b.hatena]タイトルそっくりのブックマークコメントを薄くする Fork

  • /*
     * @title [b.hatena]タイトルそっくりのブックマークコメントを薄くする
     * @description question:1316389169 用です。
     * @include http://b.hatena.ne.jp/entry*
     * @license MIT License
     */
    
    (function() {
    
    var title = document.getElementById('head-entry-link').title;
    if (typeof(title) != 'string' || title.length < 2) return;
    // 英数ひらがなカタカナ漢字のみ対象にしています
    // ハングルとか他の言語の文字も日常的に目にする場合は適宜増やして下さい
    var words = title.match(/[0-9a-zA-Z0-9a-zA-Z]+|[ぁ-ん]+|[ァ-ヴヲ-゚]+|[一-龠]+/g);
    
    // ちょん切った語の後ろに記号があったらくっつけておく
    var startPos = 0, endPos = 0;
    for (var i = 0; i < words.length; i++) {
    
    	endPos = title.indexOf(words[i], startPos) + words[i].length;
    	endPos = (i < words.length - 1) ? title.indexOf(words[i + 1], endPos) : title.length;
    	words[i] = title.substring(startPos, endPos);
    	startPos = endPos;
    
    }
    
    var chains = [];
    for (var i = 0; i < words.length - 1; i++) chains.push(words[i] + words[i + 1]);
    if (chains.length < 1) return;
    
    // なんとなくの閾値なのでお好みで変更して下さい
    var threshold = (chains.length < 3) ? 1 : chains.length / 3;
    var comments = document.getElementsByClassName('comment');
    var comment, hit;
    
    for (var i = 0; i < comments.length; i++) {
    
    	hit = 0;
    	comment = comments[i].textContent;
    
    	if (comment.length) for (var n = 0; n < chains.length; n++)
    	 if (comment.indexOf(chains[n]) != -1) hit++;
    
    	if (hit > threshold) {
    
    		for (var n = 0; n < words.length; n++)
    		 comment = comment.split(words[n]).join('');
    		// これもなんとなくの閾値
    		if (comment.length < 16)
    		 comments[i].style.color = '#DDD';
    		// こっちだと非表示にする
    		// comments[i].parentNode.style.display = 'none';
    
    	}
    
    }
    
    })();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2012/04/14 16:36:36 - 2012-04-14