【问题标题】:Jquery script for simulated key press down not running keyboard shortcut用于模拟按键的 Jquery 脚本不运行键盘快捷键
【发布时间】:2012-11-29 01:17:50
【问题描述】:

我想提前感谢您为此花费的时间和精力。好的,所以我有一个脚本,它应该在页面加载后 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>

【问题讨论】:

    标签: javascript jquery keyboard-shortcuts keypress simulate


    【解决方案1】:

    你不要先添加你的处理程序....这样做

    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/

    【讨论】:

      【解决方案2】:

      如果您尝试启动某些浏览器或系统范围的键盘快捷键,那么这是一个死胡同 - 出于安全原因,它无法完成。如果可能的话,您将拥有遍布 Internet 的页面(例如)无需询问(通过使用 Javascript 触发 CTRL+B 快捷方式)即可将自己添加到您的书签中。

      【讨论】:

      • 好的,感谢您的澄清。我有点想……但想更确定…………所以我什至无法创建一个人们可以点击的按钮来触发键盘快捷键?
      • 不,只使用 Javascript 你不能这样做。
      • 我正在修复以将其标记为您已回答...除了 javascript,您建议使用什么类型的脚本来实现这些方面的目标?
      • 我很抱歉我的意思是在我的标题中输入 jquery 而不是 javascript。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 2011-12-12
      相关资源
      最近更新 更多