2016-02-02 9 views
19

私はキー押しをシミュレートする方法を見つけようとしています。例えばJavaScriptでキー押しをシミュレートするにはどうすればよいですか?

、機能が起動すると、キーの「下向き矢印は」押さなければならないので、Webページをわずかにスクロールする必要があります。

私はChromeのみに興味がある、とjQueryまたはプレーンJSの両方が適切であろう。 (Plain JSがより好ましい)。

私が試したコード例の一つだ

:私は以下の関連の質問を検索し、見つかった

var e = $.Event("keydown", { keyCode: 40}); // 40 = down arrow 
$("body").trigger(e); 
// When I launch it the console, nothing happens. The page is not scrolled. 
// May be I missed some obvious? 

が、解決策は私のために動作しませんでした:


、あなたは簡単に何かがのように作ることができます。

あなたはDown矢印キーを押した場合

そして、それはUpをトリガされます。私はJSで実装したいだけです。

+0

これはばかげているかもしれませんが、あなたの 'HTML'に' jQuery'をインポートしましたか? – AMACB

+10

AFAIKのkeydownイベントをトリガすると、keydownハンドラプロセスが実行されます。スクロールはJavaScriptのkeydownイベントでは行われないので、ブラウザを実際にスクロールすることはできません。 'scrollTop'操作を使ってドキュメントを直接スクロールできないのはなぜですか? – Amadan

+0

あなたはjsfiddleを作成できますか? –

答えて

6

@rfsbsbから指摘したように:あなたは、いくつかのブラウザまたはシステム全体のキーボードショートカット を発射しようとしている場合Jquery script for simulated key press down not running keyboard shortcut

それはですデッドエンド - セキュリティの理由からこれを行うことはできません。それは 可能である場合は、すべての は、(例えば)でも(Javascriptを使用してCTRL + Bショートカットを焼成することによって) を求めることなく、あなたのブックマークにその人自身を追加し、インターネット上でページを持っているでしょう。ここで

5

this answerを使用して、私は少しコードを変更するために管理し、私はあなたが探しているものだと思いますか?

here is my jsfiddle

コード:

jQuery(document).ready(function($) { 
    $('body').keypress(function(e) { 
     if(e.which == '40') 
      $('body').animate({scrollTop: '100px'}); 
    }); 
}); 
jQuery.fn.simulateKeyPress = function(character) { 
    jQuery(this).trigger({ 
     type: 'keypress', 
     which: character 
    }); 
}; 

setTimeout(function() { 
    $('body').simulateKeyPress(40); 
}, 1000); 
2

Haring10の例@から始まるサンプルです:

のKeyDown-からkeyup-キー入力をトリガ

https://jsfiddle.net/po33vfb4/4/

$('body').keydown(function(e) { 
    e.preventDefault(); 
    e.stopImmediatePropagation(); 

    if(e.which == 40) { 
    window.scrollBy(0, -100); 
    } else { 
    window.scrollBy(0, 100); 
    } 
}); 

プログラム的にスクロールのEFECTを持っていないようです。上記のサンプルは、アニメーションを追加するためにカスタマイズすることができます。