oAutoPagerizeの紹介ページ
id:amatanoyoが英語圏向けのoAutoPagerize紹介ページを作ってくれ、en.opera-wikiにoAutoPagerizeの紹介記事書いてる。 - あまたの何かしら。
id:edvakfが良い感じに編集してくれました。
http://en.opera-wiki.com/oAutoPagerize
で、それをid:amatanoyoが日本語版も用意してくれたので、少し手を入れてみました。
http://ja.opera-wiki.com/oAutoPagerize
結果的に、AutoPagerize(本家含めても)の解説ページとしてはかなり良い感じに仕上がったと思います(あ、まだ追記予定のところはいくつかありますが)。
ちなみに、AutoPagerizeと書いているところは共通の仕様、oAutoPagerizeと書いているところはoAutoPagerize独自ってあたりを意識していますが、その辺をもう少しわかりやすく編集して行きたいなとか考えています。
個人の趣味でやっているので、なかなかこういうところに手が回らないので、すごく助かります。
amatanoyo++
edvakf++
Google Chrome 2.0.170のGreasemonkeyとoAutoPagerizeについて
Google Chrome 2.0.170から、Greasemonkey(というか、UserScriptsって言うべきか)の実装が変わり、oAutoPagerizeが動かなくなっていたので修正しました。本体、SITEINFO(必要であればSettingsも)全て更新の必要があります。
oAutoPagerize - 0xFF
以下、中の話。
今までは各スクリプトがグローバルスコープで実行されていましたが、2.0.107から各Scriptごとにスコープが作られるようになって、FirefoxのGreasemonkeyの実装に近くなりました。
Firefox版でいうunsafeWindowとして、contentWindow というグローバルオブジェクトが用意されています。(例えば、ページがjQueryを使っていた場合、 window.jQuery は undefined で、代わりに contentWindow.jQuery で参照できます)(あえて、unsafeという名前にしなていないようなので、安全なんだろうと思います。)
ただ、ひとつ問題があって、Firefox版ではwindowは各Scriptで共有されていてるのですが、Google Chromeではwindowも独立しています。例えばあるScriptがAutoPagerizeと連携したい場合は window.AutoPagerize経由でやり取りすることができるのですが、これができません。
なので、oAutoPagerize では contenWindow 経由で Script同士の値の共有をするように修正しました。
このあたり、また実装が変わりそうなので、気がついたら適宜対応していきます。
いつの間にか、windowは共有されるようになったみたいです。
oAutoPagerize ver1.2.2
- iframeでは起動しないオプションを追加(DISABLE_IFRAME)
thx! oAutoPagerizeをiframe内ではオフにしてみた - by edvakf in hatena - Operaで、Remove_blank.cssとの併用時に落ちることがある問題を修正
thx! -o-link で落ちる原因を調べる - Griever
thx! oAutoPagerizeとCSSの-o-linkの件 - by edvakf in hatena - 本家にあわせ、@exclude http://b.hatena.ne.jp/* を追加
- AUTO_STARTのデフォルト設定が変更できなかった問題を修正
- 本体へのローディング画像の埋め込みをやめ、設定ファイルに画像追加(Thx! id:edvakf)
- 英辞郎 on the Webへの特別対応を追加
- 右上アイコンとヘルプの表示方法をCSSベースに変更
- AutoPagerizeのスクリプト実行順序制約をなくせるようになりました « ku
- HTML と XHTML で同じ XPath を使う: Days on the Moon
更新はoAutoPagerize - 0xFFからどうぞ。
また、面倒なSITEINFOの更新にはWindows用 oAutoPagerize, xLDRizeのSITEINFOの更新バッチ - 0xFFをどうぞ。
# AutoPagerizeが発生させるイベント周りについて書くべきことがあるんだけど、まだまとまってないので後で書く。
oAutoPagerize ver 1.2
今回のアップデートからOpera 9.50で追加された機能を使用しているため、9.50より前のバージョンをサポートしなくなります。
その分軽量化しているのでご了承ください(9.50より前のバージョン用のファイルも置いてあります)。
更新内容は、
- 先日のSafariクラッシュ騒動時に編集した内容の整理
- drry先生によるコード修正
- $X関数
- Chromium の Greasemonkey をサポート(2ページ目以降も動作するように対応)
更新はoAutoPagerize - 0xFFからどうぞ。
また、面倒なSITEINFOの更新にはWindows用 oAutoPagerize, xLDRizeのSITEINFOの更新バッチ - 0xFFをどうぞ。
今後の方針
現状のソースだと、外から弄ったり、他のScriptとの連携がし難いので、少し設計から見直すかもしれません。
おまけ
Safari3の判定コード。
var isSafari = window.getMatchedCSSRules && typeof CharacterData != 'function';
まず、window.getMatchedCSSRules で Safari3 か Google Chrome と判断。
さらに、Google Chromeは typeof CharacterData を function と返すので、これを利用しています。Data と あるように、Chrome 以外のブラウザは object (もしくは undefined )です。
Google Chrome は CharacterData の以外にも、いくつかの Global プロパティを function で持っています。将来的に object になる可能性もありますが、現状はこれで Chrome を判定するのが手軽みたいです。
safariとchromeの判別 « kuによると、上記のケースでは typeof CharacterData != 'function'の代わりに window.execScript が使えるみたいです。ただ、window.execScript は IE にもあるので、単体で使う場合は注意が必要です。
おまけ2
Chromium snapshots の build number を XPathGraph っておきました。
oAutoPagerize ver 1.1.3
今回もマイナーなアップデートです。
- 右上のデフォルトサイズがデカイという話をちょくちょく目にしたので、16pxから10pxに変更しました。16のままが良いという方は、0AutoPagerize.Settings.jsのほうで調整していただくのがベターです。
- (Bookmarkletで使えるように)Firefox3でも動くように地味な修正
- CodeRepos版はArray#forEach(Opera9.5以降)などを使用して少しだけ高速化。
- GreaseKit/Greasemetal版をOpera版と同じバージョンに更新
以上です。
更新は、oAutoPagerize - 0xFFからどうぞ。
SafariでoAutoPagerizeが動かなくなっていた件
oAutoPagerize ver 1.1.2
何度も更新して恐縮ですが、9.5xでiframe方式を使用するとページ上でのキーやマウスによる操作を受け付けなくなる現象が発生したので修正を行いました*1。
例によって、更新はoAutoPagerize - 0xFFからどうぞ。
更新が連続したので、これでしばらく落ち着く予定です。その間に、(9.5用の)細かいチューニングをCodeReposにコミットして行こうと思います。
*1:iframe内でBeforeScript、BeforeExternalScriptをpreventDefaultしていたのが不味かったようなのですが、9.2xでは問題なかったので、なにか仕様がかわったんでしょうか。。