携帯版OperaのJavaScript実装
これを斜め読みした。
Opera MiniやOpera Mobileや、Nintendo DS Browserといった携帯版では、情報量を抑えるためにサーバー側でウェブページを圧縮して転送する。
- Opera Mobileは違うとコメントいただきました。自分ではよくわかりません。
そのとき、サーバーではHTMLとか画像とかJavaScriptとかになっているファイルを、Opera Binary Markup Languageというバイナリ形式 (?) に変換するみたい。
JavaScriptのonLoadイベントまではサーバー側のほうで実行されて、そのスナップショットをOBMLにするそうな。
それ以降にDOMを弄るようなサイトはうまく動かないらしい。
onLoadの後のJavaScriptは、基本的にonSubmitやonClickやonChangeなどによってのみから呼び出されて、処理に1秒もかかるような物は走らせられないらしい。
だから、interval()とかsetTimeout()は最初から実装されていないらしい。
無視されるイベントは下に引用したように、マウス・キー動作のイベントと、フォーカス関係のイベントだそうな。
Other events are ignored/not applicable, for example:
- key/mouse events (onMouseOver/-Out/-Down/-Up, onKeyDown/-KeyPress)
- focus events (onBlur, onFocus, as mentioned above)
XMLHttpRequestは普通に動くらしいのだが、それも、ユーザー主体の動作 (クリックとか) によってしか発動されないらしいので、GMailなどはほとんど普通に動くのだが、メールを自動で取得したりするのは無理らしい。
あれこれ
- oAutoPagerizeは携帯版でも動いたと書いてあるのを読んだことがあるので、onScrollも大丈夫なのかな?
- タイトルは釣りっぽく「Opera Miniが最速なワケ」にしようと思ったけど、なんとなくやめた。