如何在浏览器窗口中限制Ctrl N组合?

时间:2010-07-08 13:14:04

标签: javascript internet-explorer events browser dom-events

据我所知,我们可以使用以下Javascript代码禁用新窗口的 ctrl + N 键:

document.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; 
    } 
}

在我的情况下,有3个框架,其中一个已修复(菜单栏我可以放置此代码),但如果焦点位于其他框架中,则不会捕获此事件。如何在浏览器窗口中全局实现此限制?

4 个答案:

答案 0 :(得分:2)

您必须包含每个文档(框架)的脚本。如果所有帧都来自同一个域,您应该可以从单个入口点开始,使用window.frames集合并逐步到达每个帧的文档对象。

此外,您的脚本仅适用于IE。

这也是一个可怕的想法。你不应该接管人们的浏览器功能。

答案 1 :(得分:2)

将您的代码放在常见的.js(javascript)文件中,并将.js链接到所有页面。 如果您想要删除功能或添加任何集中功能,它将有所帮助。

答案 2 :(得分:1)

我认为您不允许以这种方式从网页控制浏览器(您也不应该这样)

答案 3 :(得分:0)

虽然这些问题通常是合法的,但尝试执行诸如阻止关键组合或right-click这样的事情实际上对您的网站不利。考虑一下:

用户希望他们的浏览器以某种方式工作。当您篡改此功能时,用户可能会感到沮丧。他们可能会认为您的网站已损坏,并离开。

当您尝试阻止用户执行内置操作时,您实质上是在监管他们的行为。除非在您的监督下,否则这会向用户表明您不相信他们使用您的网站。用户会感到被侮辱,然后离开。

如果用户禁用了JavaScript,会发生什么?或者,如果他们有自定义规则集,阻止网站更改其浏览器的行为?

打开一个新窗户有什么不妥?如果这是一个安全问题,那么应该妥善修复。如果用户有这些想法,他们可能会感到不安全,并离开。

在启动网站之前,必须考虑这些(以及许多其他事项)。希望这可以帮助您完成项目。