如何防止Javascript窗口的大小调整和最大化

如何防止调整和最大化 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");

尝试了 Stackoverflow 的多种解决方案,但没有运气。有谁能够帮助我?

回答

完全有可能

...虽然有限

通过监听窗口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);
})

这不是跨域解决方案- 您不能添加事件侦听器等。在具有不同来源的窗口上,因为它可以用于恶意目的。

结果:

【自己试试】


支持异源

以下解决方案使用当前 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);
})

结果:

【自己试试】

这适用于大多数网站。但是您偶尔会遇到“<站点名称> 拒绝连接”。

如果你想知道为什么,请查看:iframe 拒绝显示


至于防止窗口最大化,似乎没有任何方法可以以编程方式将其最小化注意:resize在 maximization 期间触发事件Window.minimize()看起来很有希望,但到目前为止还没有任何浏览器支持它。


以上是如何防止Javascript窗口的大小调整和最大化的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>