iFrame не загружается в angular 5

#javascript #html #iframe

#javascript #HTML #iframe

Вопрос:

Я пытаюсь загрузить iFrame в мое приложение angular 5, используя следующий код, но по какой-то причине он не запускает iFrame, если я не выполняю print() при загрузке ()

   let iframe = document.getElementById('print_iframe');

  iframe = document.createElement('iframe');
  iframe.setAttribute('id', 'print_iframe');
  iframe.setAttribute('name', 'print_iframe');
  iframe.setAttribute('width', '0');
  iframe.setAttribute('height', '0');
  iframe.setAttribute('frameBorder', 'no');
  iframe.setAttribute('src', 'about:blank');
  iframe.setAttribute('sandbox', 'allow-same-origin allow-modals');
  document.body.appendChild(iframe);

  iframe['contentWindow'].document.open();
  iframe['contentWindow'].document.write(output);
  iframe['contentWindow'].document.close();
  

Если я не добавлю этот код, он не запускает iFrame, что странно. Я также не вижу никаких консольных ошибок. Пожалуйста, помогите

   iframe['contentWindow'].onload = iframe.onload = function () {
  iframe['contentWindow'].print();      
}
  

Комментарии:

1. Какое неожиданное поведение заставляет вас поверить, что iframe «не загружается»? Я не понимаю, потому что я могу сказать из описания, что элемент iframe DOM, очевидно, был загружен в основной фрейм DOM, и содержимое iframe также было загружено, потому onload что вызывается. Пожалуйста, будьте более конкретны в отношении ожидаемого поведения. Что именно вы подразумеваете под словом «загрузка».

2. @hackape — спасибо, что пытались мне помочь. Я ожидаю увидеть, что всплывающее окно загружается через этот iFrame, но если я не использую print() в функции onload(), окно не запускается, но я не хочу ничего печатать и просто показываю всплывающее окно с переданным содержимым.

3. Что за «это всплывающее окно»? Все еще не понимаю, я не вижу всплывающего окна, упомянутого в вашем вопросе. Если вы не можете четко сформулировать свою проблему письменными словами, то предоставить минимальный воспроизводимый пример кода было бы проще, чтобы изложить свою точку зрения.

4. Я запускаю iframe как всплывающее окно и записываю свой результат в это окно.