Встроенный JS с Iframe SRC не работает в IE11 с Angular - PullRequest
0 голосов
/ 28 июня 2018

У меня есть сценарий, в котором мне нужно встроить встроенные js в iframe src, динамически создавая iframe во время выполнения при загрузке компонента.

Пример отлично работает как в Chrome, так и в Edge, но не работает в IE11, что может быть причиной? IE даже не жалуется, и если мы проверим журнал консоли, ничего не будет напечатано, где, как в chrome, он напечатает мое имя в журнале консоли.

Ссылка в стеке .

Примечание - Пожалуйста, запустите приложение в Chrome, а также IE, чтобы увидеть разницу.

import { Component, OnInit, Renderer2, ElementRef } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit{
  name = 'Angular 6';


 constructor(private renderer : Renderer2, private elRef : ElementRef ){}


  ngOnInit(){
    const outerDiv = this.elRef.nativeElement.getElementsByTagName('div')[0];
    const el = this.renderer.createElement('iframe');
    let script =encodeURI(`data:text/html,<script>console.log('DONE');var execute = function(context){ console.log(context.data.name);}; window.addEventListener('message', function(msg){execute(msg);});</script>`);
    el.setAttribute('sandbox', 'allow-scripts');
    el.setAttribute('src', script);
    outerDiv.appendChild(el);
    el.onload = function() {
      el.contentWindow.postMessage({name: 'Rahul'}, "*");
  }
  }
}
<div></div>

1 Ответ

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

По соображениям безопасности в IE вы не можете передавать данные base64 любого изображения / pdf или любых других ресурсов объекту HTML. Вместо этого вы можете использовать путь к серверу, имеющему актив.

как отобразить PDF в кодировке base64?

Это дает пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...