jQuerymobileの読み込み完了スクロールを止める

    jqmを組み込んでるページで、読み込み完了時にページ上部に戻される。
    スクロール途中で勝手に戻されると・・・ねぇ。

    イラっとっしたので止めることにw

    使わなきゃイーじゃんという声は全力でスルー

    と言いつつ、jqmである必要は果てしなく薄いのでそのうち撤去するけど…

    さらっとググった感じだとヒットしなかったので、
    やむをえずソースを読む。

    で、この辺だろうとあたりをつける。
    jqmの1.3.1で147行くらい(非圧縮版ね)

    // Scroll page vertically: scroll to 0 to hide iOS address bar, or pass a Y value
    silentScroll: function(ypos) {
    if ($.type(ypos) !== "number") {
    ypos = $.mobile.defaultHomeScroll;
    }
    // prevent scrollstart and scrollstop events
    $.event.special.scrollstart.enabled = false;
    setTimeout(function() {
    window.scrollTo(0, ypos);
    $.mobile.document.trigger("silentscroll", {x: 0,y: ypos});
    }, 20);
    setTimeout(function() {
    $.event.special.scrollstart.enabled = true;
    }, 150);
    },

    うむ、iosアドレスバー云々って書いてるからこれだな。

    さて、どう書くかな?と思ってたら英文であっさり見つかりました(;´∀`)

    <script>
    $(function(){
    window.scrollRef = window.scrollTo;
    window.scrollTo = function(){return false;};
    });
    </script>
    <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
    <script>
    $(function(){
    window.scrollTo = window.scrollRef;
    });
    </script>

    とか。jqueryの$(function)無くてもいいだろーって書いたら効かなかったので、
    function内に入れてみた。
    mobileinitとかに用意されてればありがたいのに(←文句言うだけw

    環境とか他のスクリプトにも依ると思うけど、まずはお気軽に試せるからいかもねー

    [amazonjs asin=”4873115264″ locale=”JP” tmpl=”Small” title=”jQuery Mobile”]
    [amazonjs asin=”4873114683″ locale=”JP” tmpl=”Small” title=”jQueryクックブック”]