b+s.hatena on world
-
/*
* @title b+s.hatena on world
* @description append HatenaBookmark and HatenaStar images to links
* @include http://*
* @contributor taizooo http://let.hatelabo.jp/taizooo/let/hLHU1vmoqpsi (Fork of)
* @orig-license Unknown (as-is)
* @license TBD (as-is)
* @javascript_url
*/
// e.g. http://ssig33.com/text
// http://f.hatena.ne.jp/noromanba/20141008032606
// XXX - main content detection
// - limit try; exec -> 10loop -> stop -> exec -> 10loop -> stop -> ...
// - insecure on secureing secret site
(function () {
var each = Array.prototype.forEach;
var blacklist = [
'[href^="http://b.hatena.ne.jp/entry/"]',
'[data-let-hatena-parts]'
].map(function (sel) { return ':not(' + sel + ')'; }).join('');
each.call(document.querySelectorAll('a' + blacklist), function (anc, idx) {
setTimeout(function () {
// c.f. http://wayback.archive.org/web/20090510113506/http://blog.webcreativepark.net/2007/06/10-234711.html
// http://d.hatena.ne.jp/Hamachiya2/20090910/bookmarklet
var banc = document.createElement('a');
banc.href = 'http://b.hatena.ne.jp/entry/' + anc.href.replace(/#/g, '\u002523').replace(/^http(s{0,1}):\/\//, function (_, b) { return b ? 's/' : ''; });
var bimg = document.createElement('img');
bimg.src = 'http://b.hatena.ne.jp/entry/image/' + anc.href.replace(/#/g, '\u002523');
banc.appendChild(bimg);
anc.parentNode.insertBefore(banc, anc.nextSibling);
// c.f. http://let.hatelabo.jp/taizooo/let/gYC-yv6JlpXGeA
var simg = document.createElement('img');
simg.src = 'http://s.st-hatena.com/entry.count.image?uri=' + encodeURIComponent(anc);
banc.parentNode.insertBefore(simg, banc.nextSibling);
anc.dataset.letHatenaParts = 'added';
}, 500 * (idx + 1));
});
})();
-
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。