Javascript 使用.animate.scrollTop()滚动时,opera中的屏幕闪烁

Javascript 使用.animate.scrollTop()滚动时,opera中的屏幕闪烁,javascript,jquery,opera,parallax,Javascript,Jquery,Opera,Parallax,这是我正在开发的网站: 在opera上,当用箭头键向下滚动时,网站在闪烁。 以下是我用于滚动的代码: //bottom of index.html else if ($.browser.opera) { $(function() { $('html').on('keydown', function(event) { var keypressed = event.keyCode; var curScroll = $('ht

这是我正在开发的网站:

在opera上,当用箭头键向下滚动时,网站在闪烁。 以下是我用于滚动的代码:

//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;
                    }
                }
            }
        });
    });

}
//index.html的底部
else if($.browser.opera){
$(函数(){
$('html')。在('keydown',函数(事件)上{
var keypressed=event.keyCode;
var curScroll=$('html').scrollTop();
var keys=scrollKeys.length;
var=false;
console.log(“按键:”+按键);
对于(i=0;i=curScroll&&parseInt(滚动键[i-1])
我已经花了一些时间试图解决这个问题,但仍然找不到这种行为的原因。该网站在Chrome、Firefox、IE8、IE9中运行良好。问题只发生在歌剧中。我知道我在index.html的末尾得到了代码x3的这一部分,我会在找到解决方案后立即对此进行优化

你知道这是怎么回事吗

编辑: 我创建了这个提琴:起初,脚本看起来不错,但当你到达底部,并试图再次上升时,屏幕开始闪烁

编辑2: 我认为解决这个问题是防止违约的问题

EditX: 我希望我没有失败编辑这个文件,所以它没有成为一个社区维基。。。无论如何,我升级了代码并在此处提供:
它使用将从jquery 1.9中删除的.browser。

添加了一些代码以防止opera中出现默认行为:

    $(document).keydown(function(e){
    var code = e.keyCode ? e.keyCode : e.which;
    if(code === 40 || code === 38){
        e.preventDefault();
        e.stopPropagation();
        return false;
    }
});
效果可以在这里看到:

它可以向下/向上滚动,并且可以正常工作


我们将对此进行优化,并在几天内使其成为一个片段:)

脚本不应该在键盘上运行而不是在键盘上运行吗?