如何防止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()看起来很有希望,但到目前为止还没有任何浏览器支持它。