当选项中包含noopener时忽略高度和宽度的Window.open

时间:2019-10-22 00:46:47

标签: javascript html window.open

我一直在尝试通过window.open函数指定弹出窗口的宽度和高度。但是,只要在选项中加入noopener,Chrome上的宽度和高度就会被忽略。

这是我使用的代码,在这种情况下,https://jsfiddle.net/v0otu1kq/窗口会以指定的尺寸打开。

但是,一旦我在选项中加入了noopener,例如https://jsfiddle.net/1eqtLsnr/会忽略维度集。

document.querySelector('[data-frame]').addEventListener('click', function(e) {
  e.preventDefault();
  window.open(
    'https://facebook.com',
    'facebook-window',
    'width=600,height=400,scrollbar=yes,noopener' // <-- this
  );
});

1 个答案:

答案 0 :(得分:1)

我对 window.open 函数的文档进行了更深入的研究,终于找到了一种解决方法:

let fbWindow = window.open(
    '',
    'facebook-window',
    'width=600,height=400,scrollbar=yes'
);

fbWindow.opener = null;
fbWindow.location = 'https://facebook.com';

其工作原理如下:

  1. 我们创建一个具有所需属性和空白URL的弹出窗口
  2. 以编程方式,我们将创建的弹出窗口的属性 opener 更改为null
  3. 完成所有操作后,我们将窗口的位置更改为所需的位置(如果之前进行过操作,则会遇到跨域错误)

PS:请注意,由于它已沙箱化,因此在JSFiddle上将不起作用。