b+s.hatena on world

    @@ -1,31 +1,44 @@ /* - * @title b.hatena on adventar - * @description adventar 投稿リンクのはてなブックマーク数を表示 - * @include http://www.adventar.org/calendars/* + * @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 */ -// for www.adventar.org -// example http://gyazo.com/e60c5ade0b259e852a7b4eecfa52398e.png via http://www.adventar.org/calendars/76 - -// cf http://blog.webcreativepark.net/2007/06/10-234711.html -// cf http://d.hatena.ne.jp/Hamachiya2/20090910/bookmarklet -// add hatena star cf http://let.hatelabo.jp/taizooo/let/gYC-yv6JlpXGeA +// 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 anchors = document.getElementsByTagName("a"); - var anchors = document.querySelectorAll(".mod-entryList-url a, .mod-recentEntries-body h3 a"); - for (var i = 0; i < anchors.length; i++) { - var anc = anchors[i]; - var banc = document.createElement("a"); - var bimg = document.createElement("img"); - var simg = document.createElement("img"); - banc.href = "http://b.hatena.ne.jp/entry/" + anc.href.replace(/#/g, '\u002523').replace(/^http(s{0,1}):\/\//, function (a, b) { - return b ? 's/' : '' - }); - bimg.src = "http://b.hatena.ne.jp/entry/image/" + anc.href.replace(/#/g, '\u002523'); - banc.appendChild(bimg); - anc.parentNode.insertBefore(banc, anc.nextSibling); - simg.src = "http://s.st-hatena.com/entry.count.image?uri=" + encodeURIComponent(anc); - banc.parentNode.insertBefore(simg, banc.nextSibling); - }; -})() + 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)); + }); +})();
  • /*
     * @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 です。

History

  1. 2014/10/17 03:03:40 - 2014-10-17
  2. 2014/10/17 03:03:02 - 2014-10-17
  3. 2014/10/08 03:40:04 - 2014-10-08
  4. 2014/10/08 03:39:52 - 2014-10-08