динамическое внедрение кода для оценки кода в окне - PullRequest
0 голосов
/ 27 июня 2018

У меня следующий код, выполненный для обработки ситуации блокировки всплывающих окон в браузере. Но мы сталкиваемся с критической проблемой в функции setTimeout. Может кто-нибудь помочь мне решить эту проблему

var myWindow = window.open("", '_blank');
if (myWindow != undefined) {
  window.setTimeout(function() {
    myWindow.document.write(text);
    myWindow.focus();
    myWindow.document.title = name;
  }, 100);
} else {
  showWarning({
      message: 'popup is blocked')
  });
} // here

1 Ответ

0 голосов
/ 27 июня 2018

Проблема не с установленным тайм-аутом.

Когда вы делаете window.open, он блокируется блокировщиком, но если вы посмотрите на возвращаемые данные, myWindow будет пустым объектом. Следовательно, это означает, что вы попадете в другую часть if else.

Измените код на:

var myWindow = window.open("", '_blank');
if (Object.keys(myWindow).length !== 0) {
    window.setTimeout(function () {
        myWindow.document.write(text);
        myWindow.focus();
        myWindow.document.title = name;
    }, 100);
} else {
    showWarning({message: 'popup is blocked')});           
}
...