3

これが私が取り組んでいるウェブサイトです:http: //kognitek.nazwa.pl/stockize/mak/MMprodukcja/parallaxProject/stronaTestowa/test.html

オペラの矢​​印キーで下にスクロールしている間、サイトがちらつきます。スクロールに使用するコードは次のとおりです。

//bottom of index.html
else if ($.browser.opera) {

    $(function() {
        $('html').on('keydown', function(event) {
            var keypressed = event.keyCode;
            var curScroll = $('html').scrollTop();
            var keys = scrollKeys.length;
            var moved = false;
            console.log("keypressed: " + keypressed);
            for (i = 0; i < keys; i++) {
                console.log("curScroll: " + curScroll)
                if (moved === false) {
                    if (keypressed === 40 && i != (keys - 1) && parseInt(scrollKeys[i]) <= curScroll && parseInt(scrollKeys[i + 1]) > curScroll) {
                        $('html').animate({
                            scrollTop : (parseInt(scrollKeys[i + 1]))
                        }, 'slow', function() {});
                        console.log('down');
                        moved = true;
                    } else if (keypressed === 38 && i != 0 && parseInt(scrollKeys[i]) >= curScroll && parseInt(scrollKeys[i - 1]) < curScroll) {
                        $('html').animate({
                            scrollTop : (parseInt(scrollKeys[i - 1]))
                        }, 'fast', function(){});
                        console.log('up');
                        moved = true;
                    }
                }
            }
        });
    });

}

私はすでにこれを修正しようとしてしばらく時間を費やしましたが、それでもこの動作の理由を見つけることができません。サイトはChrome、Firefox、IE8、IE9で正常に動作します。問題はOperaでのみ発生します。index.htmlの最後にコードx3のこの部分があることはわかっています。解決策が見つかったら、すぐにこれを最適化するつもりです。

ここで何が問題なのですか?

編集:

私はこのフィドルを作成しました:http://jsfiddle.net/mymlyn/Mr5vR/最初はスクリプトは問題ないように見えますが、一番下に到達してもう一度上に移動しようとすると、画面がちらつき始めます

Edit2:

私はそれがデフォルトの問題を防ぐと思います、これをatmで解決します

EditX:

このファイルの編集に失敗しなかったので、コミュニティwikiにはなりませんでした...とにかくコードをアップグレードし、ここで入手できます: http : //cssdeck.com/labs/swayiqbq/2.browserを使用しています。 jquery1.9。

4

1 に答える 1

1

オペラのデフォルトの動作を防ぐためのコードを追加しました:

    $(document).keydown(function(e){
    var code = e.keyCode ? e.keyCode : e.which;
    if(code === 40 || code === 38){
        e.preventDefault();
        e.stopPropagation();
        return false;
    }
});

効果はここで見ることができます:http: //kognitek.nazwa.pl/stockize/mak/MMprodukcja/parallaxProject/stronaTestowa/test_all.html

下/上にスクロールすることが可能で、想定どおりに機能します。

これを最適化して、数日でスニペットにします:)

于 2012-05-23T19:17:17.287 に答える