ユーザースクリプト版のAutoPagerizeは、400KB近いテキストデータをページを読み込むたびに解析・実行(eval)しています。
AutoPagerizeを軽量化するアイデア - 0xFF
jAutoPagerize も同じだった。 JSDeferred で非同期処理になってるけど。
拡張版を試してみてもいいんだけど、 jAutoPagerize だとはてなスターにもよきにはからってくれるので、こっちのほうが好きなんだなあ。
AutoPagerize は microformats でパターンを追加できるので、それで十分かなあ、って考えている。 microformats のパターンを追加していったときのコストがどれほどのものかわからないけど、少なくともページ読み込み毎に400KB近いデータを eval するよりは安心だという希望的観測のもとで。
なので、パッチをあてた。
--- jautopagerize.user.js.orig Thu Oct 22 00:15:30 2009 +++ jautopagerize.user.js Thu Oct 22 00:08:24 2009 @@ -467,22 +467,22 @@ function parseSiteInfo (data) { var siteinfo = []; try { - switch (url_info.format.toUpperCase()) { - case 'JSON': - siteinfo = eval(data).map(function(i) { return i.data }); - break; - case 'HTML': - default: - var d = createDocumentFromString(data); - $X(".//*[@class='autopagerize_data']", d).forEach(function (e) { + //switch (url_info.format.toUpperCase()) { + //case 'JSON': + //siteinfo = eval(data).map(function(i) { return i.data }); + //break; + //case 'HTML': + //default: + //var d = createDocumentFromString(data); + //$X(".//*[@class='autopagerize_data']", d).forEach(function (e) { // using replace as scan and folding key/value to i - var i = {}; e.value.replace(/^\s*([^:\s]+)\s*:\s*(.*)$/gm, function (m, key, value) { - i[key] = value; - }); - siteinfo.push(i); - }); - break; - } + //var i = {}; e.value.replace(/^\s*([^:\s]+)\s*:\s*(.*)$/gm, function (m, key, value) { + //i[key] = value; + //}); + //siteinfo.push(i); + //}); + //break; + //} } catch (e) { alert(e); }
parseSiteInfo を能無しにしただけ。いかにもやっつけでやりました、って感じだけど、実際そうだから仕方が無い…。
YouTube とかニコニコ動画とかのパターンを追加してあげるとよい感じになるかもしれない。
余談だけど、生まれてはじめて diff 使った…。でもシェルで見ると見づらいね。あたりまえか…。 diff ブラウザみたいのがあるなら、それを使わないとやってられないかんじですね。