巧用setTimeout处理键盘事件

2019-06-17  本文已影响0人  菜鸟也无忧

在前端开发中有时会用到处理键盘事件,如感应到回车,光标自动跳转到下一个输入框。

我的客户要求我加个功能:用键盘实现弹出一个页面(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);

}

}

上一篇 下一篇

猜你喜欢

热点阅读