携帯版OperaのJavaScript実装

これを斜め読みした。

Opera MiniOpera 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:

  1. key/mouse events (onMouseOver/-Out/-Down/-Up, onKeyDown/-KeyPress)
  2. focus events (onBlur, onFocus, as mentioned above)


XMLHttpRequestは普通に動くらしいのだが、それも、ユーザー主体の動作 (クリックとか) によってしか発動されないらしいので、GMailなどはほとんど普通に動くのだが、メールを自動で取得したりするのは無理らしい。

あれこれ

  • oAutoPagerizeは携帯版でも動いたと書いてあるのを読んだことがあるので、onScrollも大丈夫なのかな?
  • タイトルは釣りっぽく「Opera Miniが最速なワケ」にしようと思ったけど、なんとなくやめた。