Windows Phoneでwindow.scrollToが動作しなかったので、setTimeoutを使ったら動いた。

scrollToの件でWindows Phoneでドハマリしたので、とても参考になるとは思いませんが、一応メモとして残しときます。

諸事情でページがロードされたときに、ページ上部に移動するという実装を試みました。普通にwindow.scrollTo(0,0)を指定したわけですが、Windows Phoneで動作しませんでした。(Windows Phoneエミュレーターでの確認ですが)

IE9では当然ながら動作しました。なので「IE9で動くねんから動かんとおかしいやろ!」と思いながら、いろいろ試したのですが、ともかく動きませんでした。なぜなんでしょうね?

そこで、setTimeoutという選択肢がどことなく浮かんできたので、setTimeoutとともに使うとなんとか動作しました。そんときのコードが下記。(Windows Phoneのみ動作させたかったので、UA判別でWindows Phoneの場合のみという条件分岐をしています。)

if (navigator.userAgent.indexOf('Windows Phone') != -1 ){
	window.setTimeout(function(){
		window.scrollTo(0,0)
	}, 10)
};

「んなことはない!setTimeout使わんでも動くで!」と言う方がおられば(おると思います)ご教示ください。