要約:ページ分けされている時にページの下部まで来たときに次のページを自動で読み込んで加えるスクリプトを特別な用意無しでも使えるようにして、導入してみました
このサイトを見ている人なら聞き飽きたことかもしれませんが、Firefox用GreaseMonkeyスクリプトのAutoPagerize*1 は超便利です。
もともとページ分けというのは、
- ページをコンパクトにして、ブラウザ側の動作速度を優先するため
- ページをコンパクトにして、人間が読みやすい分量に収めるため
- ページ全体を一覧し、好みの位置に移動しやすくするため
などの意義があるために、UIとして多く使われているのだと思います。コンテンツをちょっとずつ足していくというAutoPagerizeのアプローチはこの利点を損なわず、かつページ切り替え時のストレスを減らしてくれる点で便利だなと。
ただ、最近はGreaseMonkeyスクリプトが動作する環境も増えてきたとはいえ、事前にインストールする必要があるのは変わらないわけです。こういう有用なテクノロジーを閉じこめておくのはもったいないですから、今回はAutoPagerizeをインストールしていない人にも使えるように工夫してみました(制作者のmalaさんに感謝)
とはいえ、AutoPagerizeはかなりのサイズになっていますし、GreaseMonkey専用の命令も含まれていますので、ウェブサイトで使うのには適していません。ということで、今回はこのネタ元的存在のGoogleAutoPagerを利用してみることにしました。
いかんせん、Javascriptに疎いですので苦労もしましたが、なんとかこのサイトの検索結果画面・タグアーカイブ画面で使えるようにしました。「情報」のサイト内検索結果ページで、動作を確認してみてください。
私の知っている限りでは、AutoPagerize的な動作をしてくれるのはMicrosoft Live 画像検索と完璧画像検索くらいしか知らないのですが、そろそろこういったインターフェイスをウェブでも標準的に使っていった方がいいのではないかなと。
あと、動作の細かな話ですが、オリジナルのAutoPagerizeとかぶってしまう(二重に読み込まれてしまう)ため、あえてa要素のrel属性(rel=”next”)を外して対処しています。もっとも、こんなアホでセマンティックレスな解決策では満足できていないので、何か良い方法があったら教えてください。
- ダウンロード
- cielo.js(最初の無名関数が今回のスクリプトの部分です)
- ライセンス
- GNU General Public License
作る上で参考にしたページ
- 最速インターフェース研究会 :: GoogleAutoPagerというのを作りました
- ブラウザの表示領域のサイズを取得する方法。 – Enjoy*Study
- ページサイズやスクロール位置を取得する – Archiva
反応に対する返信
スクロールが完全に下に行く前に読み込んでおいてもうちょっとスムーズに次ページへ進めると嬉しいなと思いました 御意。少し反応する位置を上方に修正してみました。
ユーザースクリプトはブラウザの機能を補うものであり、ブラウザがもともと持っている機能と同一視できます。ある機能を (一般の Web ページを対象とした) ユーザースクリプトで実現するということは、それをブラウザの機能として、すなわち統一された操作感の下で提供するということです。同じ機能は同じ操作で実現できることを第一とするなら、ユーザースクリプトと製作者スクリプトとではユーザースクリプトのほうを優先させるべきです。
(略)
ある機能に関するスクリプトにも CSS のように、重要指定付きユーザースクリプト、製作者スクリプト、通常のユーザースクリプトと排他的な優先順位を設定する仕組みが整っていればいいんですけどね。
機能衝突が起こる場合にユーザスクリプトの動作を優先するという前提は私も同じです。というのはまず、現在主流になっているブラウザのほぼ全てに、フォント・色彩設定やユーザスタイルシートなどのコントロール機能が実装されている以上、ウェブではユーザ側にコントロール権を持たせるという考えがあると思います。そして当然、この考えをスクリプトの動作にも適用できるからです。
それで、nanto_viさんに提示していただいた解決策は技術に疎い私からするとなかなかスマートに思えるのですが、
- AutoPagerize的な機能を持つユーザスクリプトが、単独のアドオンとして提供されているものを除いても複数存在すること(Pagerization, AutoPageLoader, jAutoPagerizeなど)
- ユーザスクリプト製作者とサイトスクリプト製作者の両者に対応が求められること
の双方を考慮すると、現実的には回避しきれずに衝突してしまうケースを危惧してしまいます*2 。
ということもあって、やはり個別的にではなく、仰るようにCSSの優先順位付けのようにGM側から構造的に解決できるとよいんですけどね…。
上記、「教えて」と言っておきながら、後出し的に「~はできないですよね」と応答するのはすごく失礼な気がしてきた。nanto_viさん、お気を悪くされたらごめんなさい。
最初から勝手に読み込むんだったらそもそもページングしなくていいのではただの分割読み込みでは。俺はあれ「ユーザスクリプトであることに意味がある」と思うけど。
ページングして分割読み込みする意味は上記に記しました。その「ユーザスクリプトであることに意味がある」理由を教えてもらえれば、どこで食い違ってるのかわかると思うんですが。
- ページの下まで来ると、次のページの内容を自動で読み込んで加えてくれるスクリプトです[戻る]
- nanto_viさんは双方がどうあったらよいかという話をしているので、こういう答え方はかみあってないかもしれませんが[戻る]
- キーワード:






読者のコメント
5件