[b.hatena]タイトルそっくりのブックマークコメントを薄くする
by
pacochi
2011-10-09 [2011/10/09 14:25:27]
question:1316389169 用です。
/*
* @title タイトルそっくりのブックマークコメントを薄くする
* @description question:1316389169 用です。
* @include http://b.hatena.ne.jp/
* @license MIT License
* @private
*/
(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) {
comments[i].style.color = '#DDD';
// こっちだと非表示にする
//comments[i].parentNode.style.display = 'none';
}
}
})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。