JavaScript文件级别的按键

时间:2014-03-26 15:21:33

标签: javascript performance keypress onload

因此我们正在考虑采取类似下面的代码来防止打开新窗口。

var onkeydown = function() { 
//alert(event.keyCode) 
if ((event.keyCode == 78) && (event.ctrlKey)) { 
    alert ("No new window") 
    event.cancelBubble = true; 
    event.returnValue = false; 
    event.keyCode = false; return false; 
}}

我们担心的是,每次用户键入密钥时,这段代码都会被触发,这是有道理的。该网站需要大量输入和输入数据 这是一个大问题吗?代码块很小,但我们讨论的是这可能会影响性能? 这是我们应该担心的事情,还是上面的代码很简单,我们应该没问题?

我们无需担心从菜单中打开一个新窗口,因为它已隐藏。

2 个答案:

答案 0 :(得分:0)

这不应该是一个问题,因为它通常不会进入if语句。只要你没有任何其他关键事件听众,你应该没事。

答案 1 :(得分:0)

你可以使用一个事件处理程序来监听按键,如果你按下的按键恰好是ctrl + n,你应该使用event.preventDefault来确保它不会做它应该做的事情。

window.addEventListener('keydown', function(e) {
   var code = e.keyCode ? e.keyCode : e.which;
      if(code == 78 && code == 17) { //ctrl + n
         e.preventDefault();
        alert("no new window");
        //further actions
   }
});

如果某个键关闭,则会侦听,然后检查您按下的键是否为ctrl和N, 如果是这样,它会阻止执行默认操作并继续执行您在函数中放置的任何内容。