2017-02-15 12 views
7

私はAngular 2をangular-cliで使用していますが、私はMicrosoft Edgeをサポートするためにsrcdoc polyfillを追加したいと思います。だから、:角2 srcdoc polyfillが機能しません

は私がpolyfills.tsでimport 'srcdoc-polyfill/srcdoc-polyfill.min';をインポートhttps://github.com/jugglinmike/srcdoc-polyfill

package.jsonに追加されました。

私はそれが好きで使用:あなたはIframeAutoHeightディレクティブのために私に言わせれば偶然

<iframe class="ticket-frame" [srcdoc]="ticket.html | htmlSafe" 
        tlIframeAutoHeight> 
</iframe> 

を、ここでのコードは次のとおりです。

@Directive({ 

    selector: '[tlIframeAutoHeight]' 
}) 
export class IframeAutoHeightDirective { 

    constructor(element: ElementRef, renderer: Renderer) { 
    renderer.listen(element.nativeElement, 'load',() => { 
     renderer.setElementStyle(
     element.nativeElement, 
     'height', 
     element.nativeElement.contentWindow.document.body.clientHeight + 'px' 
    ); 
    }); 
    } 
} 

マイクロソフトエッジ35は、およそ任意のアイデアをsrcdocプロパティを無視していますどうしたの?

回避方法も受け入れます。属性が動作しないいくつかの理由

答えて

4

<iframe #frame></iframe> 

import * as srcDoc from 'srcdoc-polyfill'; 

@ViewChild('frame') 
public iframe:ElementRef; 

srcDoc.set(this.iframe.nativeElement, "<html><body>test</body></html>"); 
+0

これは良い答えです。この例では技術的にはポリ充填されていませんが、それはむしろ芸術の用語を嫌うことがありますので、このアプローチはライブラリコードではうまくいくかもしれませんが、 'import 'srcdoc-polyfill'アプリケーションコードでは、ポリ充てんポイントのようなものです。 Btw、upvoted! –

+0

私はpolyfillが実行されたときにページに存在するiframeだけをpolyfillすると思います。 – kemsky

+0

いいえ、何もポリフィルしません。これは問題ありません。ポリ充てんされたビヘイビアを関数としてインポートしています。 –

関連する問題