Androidのorientationchangeの振る舞い

  • Androidはorientationchangeイベントが来ても、その時点でまだdocument.documentElement.clientHeight / document.body.clientHeight / window.innerHeightがまだ変わっていない。iPod touchは変わっている。
  • Androidはorientationchangeがアラートダイアログで発生するので、orientationchangeのリスナー内でアラートダイアログを出すと無限ループする。iPod touchはアラートダイアログでは発生しない。
    • 参考
    • この仕様の理由は、Androidはアプリ切り替えが前提にあるので、ブラウザから他のアクティビティに切り替えられている時に縦横切り替えが発生した場合、戻ってくるときにorientationchangeが発生しないと、コンテンツで縦横切り替えの発生を判断できないためと思われる。iPod touchしか持ってないので、iPhoneのアプリ切り替えでこのようなケースをどうするのかは不明。