1

ここに jsfiddle があります: http://jsfiddle.net/vZMyS/ 編集: Buck Doyle のおかげで、chrome と firefox/opera 用のスクリプトの異なるバージョンで適切な if else を作成しました。現在、IEでは機能しません。

スクリプトは、キーボードの上下キーを使用して、「var scrollKeys」で指定されたスクロールポイントまでユーザーが上下にスクロールできるようにするために想定されています。これはクロムでは機能しますが、他のブラウザーでは機能しません。

ここで何が問題なのですか?このコードを firefox/opera/ie8+ で動作させるにはどうすれば修正できますか?

html

<div class="big">
<div class="box1">
    <input type="text" name="input1" class="input1" />
</div>
<div class="box2">
    <input type="text" name="input2" class="input1" />
</div>
<div class="box1">
    <input type="text" name="input3" class="input1" />
</div>
<div class="box2">
    <input type="text" name="input4" class="input1" />
</div>
</div>​

CSS

.big {width:400px; height:4000px; float:left;}
.box1 {width:400px; height:1000px; background-color:#ccc; float:left;}
.box2 {width:400px; height:1000px; background-color:#ddd; float:left;}
.input1 {width:120px; height:16px; float:left;}

JavaScript

var scrollKeys = new Array('0', '1000', '2000', '3000');
$('body').on('keyup', function(event) {
    var keypressed = (event.which) ? event.which : event.keyCode;
    var curScroll = $('body').scrollTop();
    var keys = scrollKeys.length;
    var moved = false;
    for (i = 0; i < keys; i++) {
        //console.log(scrollKeys[i]);
        if (moved == false) {
            if (keypressed == 40 && i != (keys - 1) && parseInt(scrollKeys[i]) < curScroll && parseInt(scrollKeys[i + 1]) > curScroll) {
                $('body').animate({
                    scrollTop : (parseInt(scrollKeys[i + 1]))
                }, 'fast', function() {});
                console.log('down');
                moved = true;
            } else if (keypressed == 38 && i != 0 && parseInt(scrollKeys[i]) > curScroll && parseInt(scrollKeys[i - 1]) < curScroll) {
                $('body').animate({
                    scrollTop : (parseInt(scrollKeys[i - 1]))
                }, 'fast', function(){});
                console.log('up');
                moved = true;
            }
        }
    }
});​

</p>

4

1 に答える 1

1

これは、Firefox で動作するフィドルのフォークですしかし、今ではChromeでは機能しません。html重要なことは、の代わりにスクロールするように変更したことですbody

于 2012-05-10T12:37:23.750 に答える