Anyone can be a B!KUMA Girl

    
      
  • /*
     * @title Anyone can be a B!KUMA Girl
     * @description B!KUMANIZE everyone's icon
     * @include http://b.hatena.ne.jp/*
     * @license MIT License
     */
    
    // ==UserScript==
    // @name        anyone can be a b!kuma girl
    // @namespace
    // @description b!kumanize all icons
    // @include     http://b.hatena.ne.jp/*
    // @grant       none
    // @run-at      document-end
    // @version     2014.11.13
    // @homepage
    // @downloadURL
    // @author      yuta25
    // @license     MIT License http://opensource.org/licenses/MIT
    // @icon        http://f.st-hatena.com/images/fotolife/h/hatenapr/20111228/20111228162520.png
    // @icon64      http://f.st-hatena.com/images/fotolife/h/hatenapr/20111228/20111228162520.png
    // ==/UserScript==
    
    (function() {
      var BKUMA = 'http://f.st-hatena.com/images/fotolife/h/hatenapr/20111228/20111228162520.png';
      var bkumanize = function(node) {
        function changeIcon(img) {
          if (img.src.match(/^http:\/\/cdn1\.www\.st\-hatena\.com\/users\/.*\.gif$/)) {
            img.src = BKUMA;
          }
        }
        node = node || document;
        if (typeof (node.querySelectorAll) !== "undefined") {
          if (node.npodeName === "IMG") {
            changeIcon(node);
          } else {
            Array.prototype.forEach.call(node.querySelectorAll('img'), function(img) {
              changeIcon(img);
            });
          }
        }
      };
      bkumanize();
      // c.f. MutationObserver
      // https://developer.mozilla.org/en/docs/Web/API/MutationObserver
      var observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
          for (var i = 0; i < mutation.addedNodes.length; i++) {
            bkumanize(mutation.addedNodes[i]);
          }
        });
      });
      observer.observe(document, {childList: true, subtree: true});
    })();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2014/11/13 17:38:54 - 2014-11-13
  2. 2014/11/13 14:00:37 - 2014-11-13
  3. 2014/11/13 14:00:20 - 2014-11-13
  4. 2014/11/13 13:48:22 - 2014-11-13
  5. 2014/11/13 13:41:16 - 2014-11-13