Javascript 页面加载时未触发Keyup事件
我已经实现了检测“窗口徽标键”+“向上箭头”键事件的键组合的代码。当用户在文本框内单击并按住“Win+向上箭头”时,我显示警告消息。手动操作效果很好。但我试图在页面加载时触发相同的事件,它不起作用Javascript 页面加载时未触发Keyup事件,javascript,jquery,keyup,onkeyup,Javascript,Jquery,Keyup,Onkeyup,我已经实现了检测“窗口徽标键”+“向上箭头”键事件的键组合的代码。当用户在文本框内单击并按住“Win+向上箭头”时,我显示警告消息。手动操作效果很好。但我试图在页面加载时触发相同的事件,它不起作用 $(文档).ready(函数(){ var e=jQuery.Event('keyup'); e、 metaKey=true; e、 which=38;//向上箭头 //不起作用 $(“#测试”)。触发器(e); //或 //不起作用 $(“#测试”).keyup(); $(“#测试”).keyup
$(文档).ready(函数(){
var e=jQuery.Event('keyup');
e、 metaKey=true;
e、 which=38;//向上箭头
//不起作用
$(“#测试”)。触发器(e);
//或
//不起作用
$(“#测试”).keyup();
$(“#测试”).keyup(函数(e){
if(e.which==38&&e.metaKey==true){
警报(“按下win+向上箭头”);
}
});
});代码>
你试过这种方法吗?
您应该在调用触发器之前声明事件处理程序
$( "#test" ).on( "keyup", function (e){
if(e.which == 38 && e.metaKey == true)
{
alert('win + Up arrow pressed');
}
});
$( "#test" ).trigger( "keyup" );
这是因为您在调用keyup
后声明了事件处理程序
因此,要使代码正常工作,必须这样编写:
$(document).ready(function() {
$("#test").keyup(function (e){
if(e.which == 38 && e.metaKey == true) {
alert('win + Up arrow pressed');
}
});
$("#test").keyup();
});
为什么像这样显式调用keyup事件//不能使用$(“#test”).trigger(e);或//不工作$(“#测试”).keyup()代码>?需要将事件处理程序移到触发器上方。调用$(“#test”).keyup()时代码>没有设置事件处理程序。嗯,我无法理解您的问题,请签出此jsbin链接。在我刚从您的代码中删除两行代码后,它工作正常。谢谢您的建议。当我将事件处理程序移到触发器上方时,它对我有效。为什么负一点,我的问题无效吗?我试过你的代码,它能工作。但为什么窗口不是最大化的呢?也许我没有在我的问题中提到。很抱歉。您的代码中没有任何内容与最大化窗口相关。通常,窗口徽标键+向上箭头将最大化窗口。我想如果我检测到组合键(窗口徽标键+向上箭头),如果我错了,窗口会自动最大化。请建议我怎么做。这个组合被系统“捕获”,所以你不能在javascript中覆盖它。我也尝试了你的代码,它可以工作。但为什么窗口不是最大化的呢?也许我的问题中没有提到。对不起,是的,你没有提到。我不确定您是否可以最大化浏览器窗口全屏,但您可以通过javascript将其调整为screen.width和screen.height。类似于:函数maximize(){window.moveTo(0,0);window.resizeTo(screen.width,screen.height);}