因此我们正在考虑采取类似下面的代码来防止打开新窗口。
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;
}}
我们担心的是,每次用户键入密钥时,这段代码都会被触发,这是有道理的。该网站需要大量输入和输入数据 这是一个大问题吗?代码块很小,但我们讨论的是这可能会影响性能? 这是我们应该担心的事情,还是上面的代码很简单,我们应该没问题?
我们无需担心从菜单中打开一个新窗口,因为它已隐藏。
答案 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, 如果是这样,它会阻止执行默认操作并继续执行您在函数中放置的任何内容。