完全有可能
...虽然有限
通过监听window 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);
})
这不是跨域解决方案 - 您不能添加事件监听器等。在具有不同来源的窗口上,因为它可能被用于恶意目的。
结果:
[Try it yourself]
支持异源
以下解决方案使用当前 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);
})
结果:
[Try it yourself]
这适用于大多数网站。但是您偶尔会遇到“ 拒绝连接”。
如果您想知道原因,请查看:iframe refuses to display
至于防止窗口最大化,似乎没有任何方法可以以编程方式将其最小化注意:resize 事件在最大化期间被触发。 Window.minimize() 看起来很有希望,但目前还有 no support for it across any browser。