Window.open игнорирует высоту и ширину, когда noopener включен в опцию - PullRequest
0 голосов
/ 22 октября 2019

Я пытался указать ширину и высоту всплывающего окна с помощью функции 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 Ответ

1 голос
/ 22 октября 2019

Я более подробно изучил документацию по функции 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, так как он в песочнице.

...