パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。時々更新!

ブラウザ JavaScript バグ? 仕様?

以前作っていたちょっとした JavaScript なアプリを ISW13F で実行してみたら、想定外の動きになった。

一つは img を img.style.top/left で動かしているのだが、その img が ある div の子要素になっていて、img を div からはみ出すように動かすと、img がはみださないような形に変形する。例えば、div の左にはみ出すようにすると、img が縦長に潰れるように。大きくはみ出すと、縦長になりすぎて消えてしまう。こんな挙動は、これまでいくつかの Android 端末でこのスクリプトを動かしてきたが、初めて見た。Android 4.0 の仕様なのか(確かに初めて 4.0 で動かした)、この機種だけなのか。ちなみに、Chrome for Android で動かしてみると、このような挙動にはならず、普通に img は変形せずはみ出した部分が表示されないだけだ。

回避方法は、(webkit)Transform の translation で動かすこと。これで、Chrome と標準ブラウザが同じ動作になった。細かくは違う挙動のものだが、最終結果はほぼ同一なので結果オーライ。

もう一つは、未だ謎なのだが、Math.sin(0) が 0 でない値を返すことがあること。ちなみに、Chrome でも同じ現象が起こった。これまた他の端末では経験したことのない現象だ。なんとなくマルチスレッド対応がきちんとされてない、とか? クアッドコアの弊害が出ているのかもしれない。ISW13F 向けのカスタマイズが完璧じゃないのじゃないだろうか。ただ、パラメータが 0 の時以外は問題が無さそうな感じ。とりあえず常に 0.001 とか足して、0 にならないようにしたら、だいぶマシにはなった気がするが、完全ではない。

Android はこういう世界なんだなぁ、と思った。IS03 も img.style.top/left で動かすと描画がおかしくなるし、日本のメーカの技術レベルは低いのかもしれない。今のところ、GalaxyS と AcroHD では大丈夫だったのと、日本のメーカでも Medias は大丈夫だった。はてさて。