0

スライドショーを表示しているモーダルウィンドウにページがあります。対象読者はタブレットユーザー向けであり、右から左または左から右にスワイプして次または前のスライドを表示することで番組をナビゲートします。これはすべて美しく機能します。

ただし、誰かがコンピューターを使用してページを表示した場合は、キーボードの矢印キーを使用してナビゲートできるようにしたいと思います。キーストロークを検出できますが、ユーザーがモーダルウィンドウ内をクリックした後でのみです。キーボードナビゲーションが表示される前に、ユーザーがどこかをクリックする必要がないようにしたいと思います。私が何をしようとしても問題ではないようです、これは常に問題です。

これはモーダルウィンドウであるため、iFrameを使用してコンテンツを取り込むことに注意してください。

これがコードです。ページが読み込まれたときに実行され、pageTurn関数が他のイベントで機能することを確認しました。

document.onkeydown = function(e){   
    if (e == null) {
        keycode = event.keyCode;
    } else {
        keycode = e.which;
    }
    if(keycode == 37){
        pageTurn('right');
    } else if(keycode == 39){
        pageTurn('left');
    }   
};
4

3 に答える 3

5

document.documentElementだけでなく、にイベントを添付してみてくださいdocument

これが失敗した場合は、追加document.body.focus()して、ドキュメントがキーボード入力を受け取る準備ができていることを確認してください。

編集:iFrame内では、代わりにイベントをアタッチするか、ここでtop.document.documentElement説明するようにすべてのフレームにアタッチする必要があります

于 2012-04-05T12:19:55.870 に答える
0

documentキーイベントを添付するのに適しています。また、とイベントkeyCodeのすべての主要なブラウザで正しいプロパティであるため、をいじる必要はありません。keydownkeyupwhich

コメントの1つが示すように、iframe内から親ドキュメントに添付するには、parent(直接の親ドキュメントのウィンドウの場合)またはtop(最も外側のドキュメントのウィンドウの場合)を使用する必要があります。

parent.document.onkeydown = function(e) {
    e = e || parent.event;
    var keyCode = e.keyCode;
    if (keyCode == 37) {
        pageTurn('right');
    } else if (keyCode == 39) {
        pageTurn('left');
    }
};
于 2012-04-05T12:48:38.750 に答える
-2

たぶんあなたのキーコードが間違っています。ブラウザのコードを示すページは次のとおりです:http://asquare.net/javascript/tests/KeyCode.html

コードが正しい場合は、このページのイベント処理コードをご使用のバージョンと比較してください。

于 2012-04-05T12:25:43.823 に答える