2015-09-13 8 views
9

Safariブラウザでアクションがサポートされていないため、javascriptを使用してWebページでキーボードイベントをシミュレートしようとしています。JavaScriptによるキーボードイベントのシミュレート

まず、簡単なフォーム(以下に示す)を作成し、テキストボックスをタブで開こうとしましたが、機能しませんでした。

Javaスクリプト使用:(ubuntuとクロムブラウザ)。私はクロームブラウザのコンソールでスクリプトを実行しました。

var pressTabKey = document.createEvent("KeyboardEvent"); 
pressTabKey.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 9, 0); 
document.getElementById('1234').focus(); 
document.getElementById('1234').dispatchEvent(pressTabKey); 

HTMLフォーム:

<html>  
    <head>   
    </head> 
    <body> 
     <p>Test Page </p>  
     <form> 
     <input id="1234" type="text" value="Enter Here"> 
     <br> 
     <br> 
     <input id="1235" type="text" value="Enter Here">   
     </form> 
    </body> 
    </html> 
+0

http://stackoverflow.com/questions/961532/firing-a-keyboard-event-in-javascriptの複製ではありませんか? – Capsule

+0

私はそのスレッドを通過し、それらの関数とパラメータを使用しました。しかし、私はマウスのイベントをシミュレートすることができますが、タブのようなキーボードイベントをシミュレートできませんでした。とにかく、私はそれらの2つのブログをもう一度チェックします。 – user1925406

+0

これは助けになるかもしれません:http://stackoverflow.com/questions/596481/simulate-javascript-key-events – Jos

答えて

3

・ホープこのことができます:

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events

例: 私はイベントを作成しては、dispatchEvent()を使用し、それをトリガするために:

var pressTabKey = new Event('keydown'); 
document.getElementById('1234').addEventListener('keydown', function() { alert("hi!"); }); 
document.getElementById('1234').dispatchEvent(pressTabKey); 

関数にcreateEvent()は推奨されません: ​​


EDITを: あなたは単純にそうようなKeyDownイベントやキー入力イベントからキーコードを読むことができる:

http://jsfiddle.net/adrielD/me9q1qu6/

HTML

<p>Test Page </p>  
<form> 
    <input id="1234" type="text" value="Enter Here"><br> 
    <input id="1235" type="text" value="Enter Here">   
</form> 

JS:

var tab1 = document.getElementById("1234"); 
var tab2 = document.getElementById("1235"); 

tab1.addEventListener("keydown", function(event) { 
    if(event.keyCode == 9) { 
     event.preventDefault(); 
     tab2.focus(); 
    } 
}); 

tab2.addEventListener("keydown", function(event) { 
    if(event.keyCode == 9) { 
     event.preventDefault(); 
     tab1.focus(); 
    } 
}); 
0

私はまったく同じ問題に遭遇し、多くのことを試して、AHKを使用してキーボードイベント(およびいくつかのマウスイベント)を引き起こしました。私はセレンのみの解決策を見つけることができません。しかし、AHKはWindows用です。 Mac OSのような他のプラットフォームでセレンを使用している場合は、this threadをチェックしてください。

send, abc 

AHKが本格的に持っている:あなたは「キーを送信」するAHKで

、それがキープレスを行うことは非常に簡単です、フォーカスを設定した後、ちょうどAHKスクリプトを起動するには、スクリプト言語なので、これをループ/条件付きでラップすることができます。必要に応じて、マウスのクリックを特定の位置でシミュレートすることもできます。

2

あなたはjQueryのロードされているために起こる場合は、あなたがこのようにそれを行うことができます。

$(el).trigger({type: 'keypress', which: 13, keyCode: 13}); 

ご例えば次のようになります。

$("#1234").trigger({type: 'keypress', which: 9, keyCode: 9}); 

は完全なドキュメントのため​​を参照してください。

関連する問題