動的に生成されたページにはてスタをつける。LDR with HatenaStarの修正。

先日のアップデート最速インターフェース研究会 :: livedoor ReaderにはてなスターをくっつけるGreasemonkeyスクリプトが動かなくなっていたので調べてみた。

一度エントリにスターを表示したページではそれ以上スターを表示しないようになっている。http://s.hatena.ne.jp/js/HatenaStar.jsの1661行目と1689行目。

  1659      loadEntriesByHeader: function() {
  1660          var c = Hatena.Star.EntryLoader;
  1661          if (c.entries) return c.entries;
  1662          var entries = [];
  1663          var headers = c.getHeaders();
  1687      loadEntriesByConfig: function() {
  1688          var c = Hatena.Star.EntryLoader;
  1689          if (c.entries) return c.entries;
  1690          var entries = [];
  1691          if (!Hatena.Star.SiteConfig) return;
http://s.hatena.ne.jp/js/HatenaStar.js

回避策をAutoPagerizeで継ぎ足しされたエントリにもはてなスターを表示するユーザースクリプト | 東京嫉妬からもらい、LDRにスターを表示するGreasemonkeyスクリプトのinit関数を以下のように変更。

    function init(){
        w.Hatena.Star.SiteConfig = {
            entryNodes: {
                'div.item': {
                    uri: 'h2.item_title a',
                    title: 'h2.item_title',
                    container: 'h2.item_title'
                }
            }
        };
        w.Keybind.add('H', function(){
            var entries = w.Hatena.Star.EntryLoader.entries;
            w.Hatena.Star.EntryLoader.entries = null;
            new w.Hatena.Star.EntryLoader();
            w.Hatena.Star.EntryLoader.entries = Array.concat(entries, w.Hatena.Star.EntryLoader.entries);
        });
    }

entriesをいったん退避させてマージするのはなんでかよくわかってないけどこれで動くようになった。