2

これに費やした時間と労力に前もって感謝したいと思います。さて、ページが読み込まれてから3秒後にキーを押すイベントをシミュレートするスクリプトがあります。私はこのキーを押すことでキーボードショートカットを実行するつもりでしたが、それはすべてキーを押すだけです。一度押すと実際にショートカットを実行するにはどうすればよいですか?これが可能かどうかはわかりません。もう一度ありがとう。

<script>
 setTimeout( function(){
// jQuery plugin. Called on a jQuery object, not directly.
jQuery.fn.simulateKeyPress = function(character) {
  // Internally calls jQuery.event.trigger
  // with arguments (Event, data, elem). That last arguments is very important!
  jQuery(this).trigger({ type: 'keypress', which: character.charCodeAt(0) });
};

jQuery(document).ready( function($) {
  // Bind event handler
  $( 'body' ).keypress( function(e) {
    alert( String.fromCharCode( e.which ) );
    console.log(e);
  });
  // Simulate the key press
  $( 'body' ).simulateKeyPress('z');
});
 }, 3000); //3 seconds

</script>

<script type="text/javascript">
// define a handler
function doc_keyUp(e) {

    // this would test for whichever key is 40 and the ctrl key at the same time
    if (e.ctrlKey && e.keyCode == 122) {
        // call your function to do the thing
        pauseSound();
    }
}
// register the handler 
document.addEventListener('keyup', doc_keyUp, false);
</script>
4

2 に答える 2

10

ブラウザまたはシステム全体のキーボードショートカットを起動しようとしている場合、それは行き止まりです-セキュリティ上の理由から実行できません。可能であれば、インターネット全体にページがあり、(たとえば)質問することなく(Javascriptを使用してCTRL + Bショートカットを起動することにより)ブックマークに自分自身を追加します。

于 2012-12-11T13:19:27.163 に答える
2

最初にハンドラーを追加しないでください。

jQuery(document).ready(function($) {
    // Bind event handler
    $('body').keypress(function(e) {
        alert(String.fromCharCode(e.which));
    });
});
jQuery.fn.simulateKeyPress = function(character) {
    jQuery(this).trigger({
        type: 'keypress',
        which: character.charCodeAt(0)
    });
};

setTimeout(function() {
    $('body').simulateKeyPress('z');
}, 3000); //3 seconds

テストする例:http://jsfiddle.net/x8a25/1/

于 2012-12-11T13:19:19.773 に答える