在前端开发中有时会用到处理键盘事件,如感应到回车,光标自动跳转到下一个输入框。
我的客户要求我加个功能:用键盘实现弹出一个页面(window.open),之前是IE浏览器,我就直接加了个组合键Ctrl+Enter就弹出页面。
document.onkeydown=function(){
if(event.ctrlKey&&event.keyCode == 13){
print('$(id}')
}
}
//弹出打印页
function print(arg) {
var url = "<%=basePath %>********.action?id="+arg;
window.open(url,'newwindow','height=700,width=960,top=190,left=350,toolbar=no,menubar=no,scrollbars=yes,resizable=no, location=no,status=no');
}
后来浏览器换成Chrome,页面总是在新标签打开,不弹出了,研究了2天,发现在Chrome浏览器,点击链接打开页面时,如果按住了Ctrl,就是新打开标签页。那么,只要在打开标签页之前不让电脑感应到Ctrl键就行了,我想到了同步和异步的关系,按住Ctrl并感应到了就是同步,感应不到就是异步,然后就想到了延迟加载。
//将打开操作延迟加载,测试发现只要1毫秒就能实现
document.onkeydown=function(){
if(event.ctrlKey&&event.keyCode == 13){
window.setTimeout(function(){print('$(id}');},1);
}
}
网友评论