如何防止调整和最大化 Javascript 窗口?
我正在使用以下代码:
var win = window.open(myURL, "_blank", "toolbar=no,menubar=no,scrollbars=yes,dialog=yes,resizable=no,top=100,left=250,width=800,height=530");
Run Code Online (Sandbox Code Playgroud)
尝试了 Stackoverflow 的多种解决方案,但没有运气。有谁能够帮助我?
Spe*_*ric 15
...虽然有限
通过监听窗口resize事件并使用该Window.resizeTo()函数,可以防止窗口调整大小。
var x = window.open("https://www.stackoverflow.com", "_blank", "toolbar=no,menubar=no,scrollbars=yes,dialog=yes,resizable=no,top=100,left=250,width=800,height=530");
x.addEventListener("resize", () => {
x.resizeTo(800, 530);
})
Run Code Online (Sandbox Code Playgroud)
这不是跨域解决方案- 您不能添加事件侦听器等。在具有不同来源的窗口上,因为它可以用于恶意目的。
结果:

以下解决方案使用当前 URL 创建一个新窗口,然后使用<iframe>包含所需站点的源的文件覆盖该文档。
为什么我们首先使用当前的 URL 打开?因此,我们可以操作 DOM,而不会因这些“阻止了一个具有原点的框架”......而访问跨源框架”错误而烦恼,并且我们还可以将调整大小事件侦听器附加到窗口(不可能与原始解决方案)。
var goto = "https://wix.com";
var x = window.open(location, "_blank", "toolbar=no,menubar=no,scrollbars=yes,dialog=yes,resizable=no,top=100,left=250,width=800,height=530");
x.document.write(`<html><head><style>body{margin:0;overflow:hidden;}iframe{width:100%;height:100%;border:0}</style></head><body><iframe src="${goto}"></iframe></body></html>`);
x.addEventListener("resize", () => {
x.resizeTo(800, 530);
})
Run Code Online (Sandbox Code Playgroud)
结果:

这适用于大多数网站。但是您偶尔会遇到“<站点名称> 拒绝连接”。
如果你想知道为什么,请查看:iframe 拒绝显示
至于防止窗口最大化,似乎没有任何方法可以以编程方式将其最小化注意:resize在 maximization 期间触发事件。Window.minimize()看起来很有希望,但到目前为止还没有任何浏览器支持它。
一般来说,你不能。这是由浏览器配置控制的功能:
如何关闭窗口大小调整功能或删除工具栏?
你不能强迫这样做。使用基于 Mozilla 的浏览器的用户可以通过 about:config 中的用户首选项来绝对控制窗口功能,例如可调整大小、可滚动性和工具栏的存在。由于您的用户应该使用此类窗口(而不是您,作为网络作者),因此最好是避免干扰他们的习惯和偏好。我们建议始终将可调整大小和滚动条的存在(如果需要)设置为“是”,以确保内容的可访问性和窗口的可用性。这符合网络作者和用户的最佳利益。
谷歌浏览器也是如此。