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

Javascript 如何在浏览器窗口中限制Ctrl-N组合?,javascript,internet-explorer,events,browser,dom-events,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.retur

据我所知,我们可以使用以下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帧,其中一帧是固定的(我可以在菜单栏中放置此代码),但如果焦点在其他帧中,则不会捕获此事件。如何在浏览器窗口上全局实现此限制?

我认为您不允许从网页(也不应该)以这种方式控制浏览器我认为您不允许从网页(也不应该)以这种方式控制浏览器您必须包含每个文档(框架)的脚本。如果所有的框架都来自同一个域,那么您应该能够从单个入口点,使用
window.frames
集合并向下搜索每个框架的文档对象来完成这项操作

你的脚本也只能在IE中使用


这也是一个糟糕的想法。您不应该接管人们的浏览器功能。

您必须包含每个文档(框架)的脚本。如果所有的框架都来自同一个域,那么您应该能够从单个入口点,使用
window.frames
集合并向下搜索每个框架的文档对象来完成这项操作

你的脚本也只能在IE中使用


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

虽然这样的担忧通常是合理的,但试图做一些事情,例如防止组合键或a键,实际上对你的网站不好。考虑这一点:

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

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

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

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


在启动一个站点之前,必须考虑这些(以及许多其他)因素。希望这对你的项目工作有所帮助。

虽然这样的担忧通常是合理的,但试图做一些事情,如阻止键组合或a键组合,实际上对你的网站不好。考虑这一点:

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

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

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

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


在启动一个站点之前,必须考虑这些(以及许多其他)因素。希望这对您在项目中的工作有所帮助。

将代码放在common.js(javascript)文件中,并将该.js与所有页面链接起来。
如果您想删除该功能或添加任何集中式功能,它会有所帮助。

将代码放在common.js(javascript)文件中,并将该.js与所有页面链接起来。
如果您想删除该功能或添加任何集中式功能,它将有所帮助。

谢谢您的评论,但我需要这样做,因为服务器端代码(需要一段时间才能修复和发布)使用了会话变量,这些变量在具有相同会话的两个浏览器窗口中共享。你能分享一小段代码来处理所有的框架吗?谢谢你的评论,但我需要这样做,因为服务器端的代码(需要一段时间来修复和发布)使用了会话变量,这些变量在两个浏览器窗口中通过同一个会话共享。你能分享一小段代码来处理所有的框架吗?谢谢你的评论,但我需要这样做,因为服务器端的代码(需要一段时间来修复和发布)使用了会话变量,这些变量在两个浏览器窗口中通过同一个会话共享。你能分享一小段代码来处理所有的框架吗?谢谢你的评论,但我需要这样做,因为服务器端的代码(需要一段时间来修复和发布)使用了会话变量,这些变量在两个浏览器窗口中通过同一个会话共享。你能分享一小段代码来处理所有的框架吗?