Expand Hatena::Star

    @@ -7,32 +7,33 @@ */ // http://os0x.g.hatena.ne.jp/os0x/20080502/1209724672 -console.time('*runtime'); +//console.time('*runtime'); (function(Hatena) { if (typeof Hatena === 'undefined') return; - var ei = 0; - // TODO doubleness exec + Hatena.Star.EntryLoader.entries.forEach(function (entry) { - console.info('*ei:', ei++); var expander = entry.star_container.querySelector('span.hatena-star-inner-count'); if (expander && expander.textContent) { - entry.stars.some(function (star, idx) { - console.info('*idx:', idx); + entry.stars.some(function (star) { if (star && star.count && star.showInnerStars) { star.showInnerStars(); - console.info('*expand:'); return true; // rustic } }); } }); })(window.Hatena); -console.timeEnd('*runtime'); +//console.timeEnd('*runtime'); + /* # Performance on http://d.hatena.ne.jp/amachang/ -## nonDOM *runtime: 47ms -> *runtime: 57ms +1st -> 2nd execute times. ++ debug code included ++ disable cache +## nonDOM ++ *runtime: 47ms -> *runtime: 57ms ## useDOM -Hatena.Star.EntryLoader.entries[0].star_container.querySelector('SELECTOR') + Hatena.Star.EntryLoader.entries[0].star_container.querySelector('SELECTOR'); ### selectors + .hatena-star-star-container > .hatena-star-inner-count *runtime: 36ms -> *runtime: 2ms @@ -42,4 +43,7 @@ *runtime: 42ms -> *runtime: 2ms + .hatena-star-inner-count *runtime: 39ms -> *runtime: 3ms +## disable other Greasemonkey Scripts ++ span.hatena-star-inner-count + *runtime: 4ms -> *runtime: 0ms */
  • /*
     * @title Expand Hatena::Star
     * @description Expand Hateha::Star handle colored stars
     * @include http://*
     * @license MIT License http://nrm.mit-license.org/2012
     * @require 
     */
    
    // http://os0x.g.hatena.ne.jp/os0x/20080502/1209724672
    //console.time('*runtime');
    (function(Hatena) {
        if (typeof Hatena === 'undefined') return;
    
        Hatena.Star.EntryLoader.entries.forEach(function (entry) {
            var expander = entry.star_container.querySelector('span.hatena-star-inner-count');
            if (expander && expander.textContent) {
                entry.stars.some(function (star) {
                    if (star && star.count && star.showInnerStars) {
                        star.showInnerStars();
                        return true; // rustic
                    }
                });
            }
        });
    })(window.Hatena);
    //console.timeEnd('*runtime');
    
    /*
    # Performance on http://d.hatena.ne.jp/amachang/
    1st -> 2nd execute times.
    + debug code included
    + disable cache
    ## nonDOM
    + *runtime: 47ms -> *runtime: 57ms
    ## useDOM
        Hatena.Star.EntryLoader.entries[0].star_container.querySelector('SELECTOR');
    ### selectors
    + .hatena-star-star-container > .hatena-star-inner-count
        *runtime: 36ms -> *runtime: 2ms
    + span.hatena-star-star-container > span.hatena-star-inner-count
        *runtime: 51ms -> *runtime: 3ms 
    + span.hatena-star-inner-count
        *runtime: 42ms -> *runtime: 2ms
    + .hatena-star-inner-count
        *runtime: 39ms -> *runtime: 3ms
    ## disable other Greasemonkey Scripts
    + span.hatena-star-inner-count
        *runtime: 4ms -> *runtime: 0ms
    */
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2014/12/11 03:55:50 - 2014-12-11
  2. 2014/11/22 06:03:33 - 2014-11-22
  3. 2014/11/21 01:34:31 - 2014-11-21
  4. 2012/04/23 21:27:25 - 2012-04-23
  5. 2012/04/23 19:26:29 - 2012-04-23
  6. 2012/04/23 19:22:30 - 2012-04-23
  7. 2012/04/23 19:10:13 - 2012-04-23
  8. 2012/04/23 18:55:00 - 2012-04-23
  9. 2012/04/23 18:16:42 - 2012-04-23
  10. 2012/04/23 17:13:56 - 2012-04-23