У меня есть сценарий, в котором мне нужно встроить встроенные 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>