0

SO の投稿からアドレス バーを非表示にする方法を見つけたので、このスクリプトを実行して、アドレス バーがビューからスクロールされた後にビューポートの高さを取得する必要があります。

しかし、1 秒後に getViewPortSize() 関数を呼び出しますが、H 値と W 値はスクロールが行われる前に返されます。ダイアログ ボックスの [OK] をクリックすると、アドレス バーがスクロールされます。

これを期待どおりに機能させるのを手伝ってくれる人はいますか?

$(document).ready(function () {
        window.addEventListener("load", function () { if (!window.pageYOffset) { hideAddressBar(); } });
        window.addEventListener("orientationchange", hideAddressBar);

        setTimeout(getViewPortSize(), 1000);

        function getViewPortSize() {
            var viewportWidth = $(window).width();
            var viewportHeight = $(window).height();

            alert('viewportHeight: ' + viewportHeight);
        }
        function hideAddressBar() {
            if (!window.location.hash) {
                if (document.height < window.outerHeight) {
                    document.body.style.height = (window.outerHeight + 50) + 'px';
                }

                setTimeout(function () { window.scrollTo(0, 1); }, 0);
            }
        }
    });
4

1 に答える 1

0

この答えを見つけました:

setTimeout(getViewPortSize(), 1000); を置き換えました。

と:

$(window).scroll(function () {
    getViewPortSize()
});

スクロールが発生するまで関数が起動されないようにします。

于 2013-02-12T15:00:45.497 に答える