AutoPagerize/Extension/HatenaStar

Last-modified: 2009-02-23 (月) 16:53:18

Hatena Star with AutoPagerize for SeaHorse by 958

概要

  • Autopagerize for Seahorse で継ぎ足したページにもはてなスターを表示する

必須拡張

  • SeaHorse 1.1.1 以上
  • UserAction Extension 1.0.0 以上

動作確認環境

  • Windows XP SP2
  • Internet Explorer 7
  • Sleipnir 2.7.0
  • Seahorse 1.1.2
  • UserAction Extension 1.0.1

インストール

  • ソースをコピーし、テキストエディタに貼り付け
  • sleipnir のインストールディレクトリ\plugins\seahorse\fHatenaStarWithAP.user.js に保存

説明

  • インストール完了後、はてなスターが設置されている AutoPagerize for SeaHorse 対応済みのサイトにアクセスし、ページ下方にスクロールして次のページを継ぎ足す
  • 継ぎ足したページにもはてなスターが表示される

制限事項

  • 他のはてなスター関連の SeaHorse スクリプトを使用していると、正常に動作しない場合がある

ソース

// ==UserScript==
// @name Hatena Star with AutoPagerize
// @description AutoPagerize で継ぎ足したページにもはてなスターを表示する
// @include http://*
// @version 0.01
// @author 958
// ==/UserScript==
window.attachEvent('onload', function(){
	if (!window.AutoPagerize || !window.Hatena)
		return;

	var $w = typeof unsafeWindow != "undefined" ? unsafeWindow : window;
	$w.Hatena.Star.EntryLoader.loadNewEntries= function(node) {
		var c = Hatena.Star.EntryLoader;
		if (!node) node = document.body;
		var entries_org = c.entries;
		c.entries = null;
		var entries;
		if (c.headerTagAndClassName) {
			entries = c.loadEntriesByHeader(node);
		} else if (c.loadEntries) {
			entries = c.loadEntries(node);
		} else {
			entries = c.loadEntriesByConfig(node);
		}
		c.entries = [];
		var urilist = [];
		if (entries_org && entries_org.length > 0) {
			for (var i = 0; i < entries_org.length; i++) {
				var entry = entries_org[i];
				urilist.push(entry.uri);
			}
		}
		if (urilist.length > 0)
			var re = new RegExp(urilist.join('|'));
		if (entries && typeof(entries.length) == 'number') {
			for (var i = 0; i < entries.length; i++) {
				if ((urilist.length > 0) && (entries[i].uri.match(re))) continue;
				var e = new Hatena.Star.Entry(entries[i]);
				e.showButtons();
				c.entries.push(e);
			}
		}
		c.getStarEntries();
		if (entries_org) {
			c.entries.push(entries_org);
			c.entries = Ten.Array.flatten(c.entries);
		}
	};
	function starInit(){
		$w.Hatena.Star.EntryLoader.loadNewEntries();
	}
	window.AutoPagerize.addElementFilter(function(docs) {
		setTimeout(starInit, 0);
	});
});