AutoPagerizeに対応する
AutoPagerizeという素晴らしい!ソフトウェアに出会った。Firefoxの機能拡張スクリプトだ。どのような機能を提供してくれるかというと、webページの下までスクロールしてくると、普通は「次ページ」などのリンクをクリックしてその続きを読み込むことになる。ここでもしAutoPagerizeがインストールされていれば、下までスクロールしてくると自動的に次のページを取得して、その同じページに継ぎ足してしてくれる。
この自動的に続きのページが継ぎ足されていくところが素晴らしいところ。次のリンクを探したり、クリックしてからの若干の読み込み時間が気になったり、ということがなくなる。途切れること無く集中してページを読み続けることができるのだ。一度体験すると病みつきになる。もう次ページをクリックする操作に戻りたくない。
- 気になることも出てきた。自動でページ挿入されると、レイアウトによってはfooter周辺の情報が見難くなってしまうこともある...。
- 飾り気の無いサンプルで分かり難いかもしれないが、水平ライン下のpage: 2、page: 3が自動的に継ぎ足されたページ。
インストールから使い方まで、ウノウラボ Unoh Labs/ Webブラウジングを快適にするAutoPagerizeのページで簡潔に紹介されている。(感謝です。)それを参考に同じように自分でやってみた。
インストール
Greasemonkey
- AutoPagerizeはGreasemonkey上で動作するユーザースクリプト。まずはFirefoxのGreasemonkeyアドオンページからインストールした。(緑色の「インストール」ボタンを押すだけ。)
- Greasemonkeyとは何か良く知らないので、Greasemonkey - Mozilla Firefox まとめサイトをよく読んでおいた。(利便性とセキュリティー上の問題について)
AutoPagerize
- Greasemonkeyをインストールしたら、ユーザースクリプトのAutoPagerize配布ページからインストール出来る。(右上の「Install this script」ボタンを押すだけ。)
自分で開発したRailsサイトもAutoPagerizeに対応したい!
- 現在試行錯誤中の複数モデル同時保存のサンプルコードで以下のように対応させてみた。3つの属性を設定するだけでOK。
- rel="next"
- class="autopagerize_page_element"
- class="autopagerize_insert_before"
<%# AutoPagerize %> <%# http://d.hatena.ne.jp/swdyh/20070701/1183239979 %> <h1>Listing slips</h1> <%# AutoPagerize: class="autopagerize_page_element" 属性タグが自動読み込みで描画される範囲になる %> <div class="autopagerize_page_element"> <table> <tr> <% for column in Slip.content_columns %> <th><%= column.human_name %></th> <% end %> </tr> <% for slip in @slips %> <tr id="<%= partial_path(slip) %><%= dom_id(slip) %>"> <% for column in Slip.content_columns %> <td><%=h slip.send(column.name) %></td> <% end %> <td><%= link_to 'Show', :action => 'show', :id => slip %></td> <td><%= link_to 'Edit', :action => 'edit', :id => slip %></td> <td><%= link_to 'Destroy', { :action => 'destroy', :id => slip }, :confirm => 'Are you sure?', :method => :post %></td> </tr> <% end %> </table> <%= link_to 'Previous page', { :page => @slip_pages.current.previous }, {:rel=>'prev'} if @slip_pages.current.previous %> <%# AutoPagerize: rel="next" 属性で自動的に読み込まれる次ページへのリンクを指定する %> <%= link_to 'Next page', { :page => @slip_pages.current.next }, {:rel=>'next'} if @slip_pages.current.next %> <br /> </div> <%# AutoPagerize: class="autopagerize_insert_before" 属性の手前に次ページの描画結果が挿入される %> <div class="autopagerize_insert_before"></div> <%= link_to 'New slip', :action => 'new' %>
rel属性について以下のページが大変参考になりました。感謝です。
これで、ページ最初のスクリーンショットの状態になった。(次ページを自動読み込みするタイミングは、スクロール動作で下に近づいた時のようなので、本来はスクロールバーが表示されている状況。)