AutoPagerize が Google Search で動かない件とその解決案

xkansan:

Google の検索結果で AutoPagerize が動かないという報告がなされている。
一例:

これは Google のトップページ(http://www.google.com/ 等)から検索した際にブラウザの JavaScript を有効にしていると生じる問題の様だ。
なので、

  • ブラウザの検索ボックスから検索する
  • ブラウザの JavaScript を Off にして Google のトップページから検索する

といった状況では、Google の検索結果で問題なく AutoPagerize が動作する。
一応確認用の URL を貼っておく。

なお、以上は

  • Firefox 3.6.16
  • Greasemonkey 0.9.1
  • AutoPagerize for Greasemonkey 0.0.58

で確認した。

で、動作しない方のページでは JavaScript でページの要素を生成しているため SITEINFO (http://wedata.net/items/472) の編集では問題が解決できない。 ブラウザの検索ボックスから検索すれば済む話ではあるけれど、 http://twitter.com/Hamachiya2/status/18414633403 のようにトップページからの検索にこだわりを持つ人もいるので、そういった場合でも AutoPagerize が動作する方法を考えてみた。

とりあえず Google の検索結果ページの URL を書き換えてやれば良さそうなので、そのような Greasemonkey スクリプトを用意する。


(function() {
     window.addEventListener('hashchange',
                             function() {
                                 if (/^https?:\/\/[^./]+\.google(?:\.[^./]{2,3}){1,2}\/(?:webhp)?/.test(location.href) &&
                                     /^#(?:[^=]+=[^&]*&?)+$/.test(location.hash)) {
                                     location.href = location.protocol + '//' + location.host + '/search?' + location.hash.substr(1);
                                 }
                             },
                             false);
 }());

これで Google のトップページから検索した場合でも AutoPagerize が動作するようになる。

などで試して問題なく動作することを確認した。

追記
上記のコードを少し変更したものを https://bitbucket.org/xKairouan/google_search_without_hash においた。