東京アメッシュ for iPhone を落ちにくくしました
昨晩も豪雨だったので、早速東京アメッシュ for iPhoneを使っていたんですが、最近薄々思っていた事。「これ、アニメーションさせてると2週目くらいで落ちる?」
電源OFFしたりOSのバージョンがあがった後も、やっぱり落ちる。
ん~なんかコードにミスがあるのか?アニメーションのループがオーバーフローしてたり??
でもコードをながめる分にはそんな所はなさそう。
しょーがないので一つずつ機能を無効にして落ちなくなるのを探そうとした所、速攻で発見。
iPhoneでURLバーを隠す定石とも言える、window.onloadでスクロールさせる部分でした。
これをinitの中でスクロールさせるようにすることで落ちるのがほとんど無くなりました。
具体的には…
before
----------------------------------------------------------------------
<body>
<div>
…
</body>
<script language = "javascript" type = "text/javascript" ><!--
window.onload = function() { setTimeout( "window_move();", 100 ); }
function window_move(){
window.scrollTo( 0, 1 );
init();
}
function init(){
…
}
----------------------------------------------------------------------
after
----------------------------------------------------------------------
<body onload="init();">
<div>
…
</body>
<script language = "javascript" type = "text/javascript" ><!--
function window_move(){
window.scrollTo( 0, 1 );
}
function init(){
…
setTimeout( "window_move();", 100 );
}
----------------------------------------------------------------------
ただし、タイミングのズレがあるのかたまにスクロールがうまくいかない時もあるようです。まぁ落ちるよりはましということで。
でもなんでこれで落ちにくくなるのかは…??? windw_moveの中にinitがあるのがまずいんですかねぇ?アニメーションする毎にwindow.loadが呼ばれる?ソンナバカナ。
そもそも、window.onloadとbody要素のonloadで各々動いてくれればいいんですけど、なぜか両方を設定するとwindow.onloadしか有効にならない感じ?だったのでwindw_moveにinitを入れてしまった訳ですが、今度はinitの中でwindow_moveを設定するようにさせただけです。
なーんか致命的な事があったんですかね~?
javascript初めて1ヶ月くらいの私にはよくわかりません…
| 固定リンク


コメント