miau's blog?

英辞郎 on the Web の AutoPagerize

最近たまに英語を読み書きすることがあるので 英辞郎 on the Web を使うことが増えてるんですが。このページ AutoPagerize に対応してないからちょっと不便。
「まあ対応してないなら自分で設定すればいいか〜」と着手してみて気づいたけど、「次へ」のリンク先が

<a href='javascript:goPage("2")'>次へ</a>

こんな感じで JavaScript で記述されている。これだと SITEINFO に追加してもうまくいかない。goPage() は URL 組み立てて document.location.href に設定しているだけなんだけどなぁ。

「nextLink が javascript: で始まってたら iframe 作ってそこで実行させて document 拾って〜」とかやれば汎用的に対応できそうな気もするけど、面倒なんで autopagerize.user.js にベタ書きして対応した。

--- autopagerize.user.js.org Mon Jan 28 00:16:14 2008
+++ autopagerize.user.js Sun Jan 27 23:10:30 2008
@@ -58,6 +58,12 @@
pageElement: '',
},
*/
+ {
+ url: 'http://eow.alc.co.jp/.*?/UTF-8/',
+ nextLink: '//a[text()="次へ"]',
+ insertBefore: 'id("resultList")/following-sibling::node()',
+ pageElement: 'id("resultList")',
+ },
]
var MICROFORMAT = {
nextLink: '//a[@rel="next"] | //link[@rel="next"]',
@@ -304,6 +310,15 @@
AutoPager.prototype.getNextURL = function(xpath, doc) {
var next = getFirstElementByXPath(xpath, doc)
if (next) {
+ if (document.location.href.match(/eow.alc.co.jp/)) {
+ var href = document.location.href;
+ if (!href.match(/pg=/)) {
+ href += '?pg=1';
+ }
+ if (next.href.match(/goPage\("(\d+)"\)/)) {
+ return href.replace( /pg=(\d+)/, 'pg=' + RegExp.$1);
+ }
+ }
return next.href || next.action || next.value
}
}

これで少し快適に。


posted at 00:34:13 on 2008-01-28 by miau - Category: General No Trackbacks - Permalink

TrackBack

このエントリにトラックバックはありません
現在トラックバックは受け付けていません。

Comments

No comments yet

Add Comments

現在コメントは受け付けていません。
お手数ですが、 こちら のコメント欄にでも記載していただければと思います。