Google Reader で 5 件ずつ一気に新しいタブで表示する Greasemonkey を書いてみた その3

その2:http://d.hatena.ne.jp/spider-man/20080115
全件といいつつ怖いので50件を表示するボタンも追加してみた。

// ==UserScript==
// @name           google reader all open button
// @namespace      googlereader@basyura.com
// @include        http://www.google.co.jp/reader/view/*
// ==/UserScript==
//
//  version 0.3
//
var MAX_OPEN_COUNT = 5;
function openAll() {
  openPages(50);
}
function openPages(max) {
  if(max == undefined) {
    max = MAX_OPEN_COUNT;
  }
  var entries = document.getElementById("entries");
  var hrefs   = entries.getElementsByTagName("a");
  var limit = hrefs.length - 2;
  if(limit > max) {
    limit = max;
  }
  for(var i = 0 ; i < limit ; i++) {
    var event = document.createEvent('MouseEvents');
    event.initMouseEvent ('click', false, true, document.defaultView,
        1, 0, 0, 0, 0, false, false, false, false, 0, null);

    hrefs[i].dispatchEvent(event);
    GM_openInTab(hrefs[i].href);
  }
  for(var i = 0 ; i < limit ; i++) {
    var list = hrefs[i].parentNode.parentNode.parentNode.parentNode;
    list.removeChild(list.firstChild);
  }
}
function addOpenButton() {
  var button   = document.createElement("input");
  button.type  = "button";
  button.value = MAX_OPEN_COUNT + "件表示";
  button.addEventListener("click" , openPages , false);
  var search_submit = document.getElementById("search-submit");
  search_submit.parentNode.appendChild(button);
}
function addAllOpenButton() {
  var button   = document.createElement("input");
  button.type  = "button";
  button.value = "全て表示";
  button.addEventListener("click" , openAll , false);
  var search_submit = document.getElementById("search-submit");
  search_submit.parentNode.appendChild(button);
}
addOpenButton();
addAllOpenButton();

もの置き(http://www3.pf-x.net/~spider-man/) にも置いてみた。