2017-02-15 35 views
7

Tôi đang sử dụng Angular 2 với angular-cli và tôi muốn thêm sfcdoc polyfill để hỗ trợ Microsoft Edge. Vì vậy:Góc 2 srcdoc polyfill không hoạt động

tôi thêm vào package.json https://github.com/jugglinmike/srcdoc-polyfill

tôi nhập khẩu import 'srcdoc-polyfill/srcdoc-polyfill.min'; trong polyfills.ts.

tôi đã sử dụng nó như:

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

Tình cờ, nếu bạn hỏi tôi cho chỉ thị IframeAutoHeight, đây là mã:

@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' 
    ); 
    }); 
    } 
} 

Microsoft Edge 35 được bỏ qua bất động sản srcdoc, bất kỳ ý tưởng về vấn đề là gì

Tôi cũng chấp nhận cách giải quyết.

Trả lời

4

Đối với một số lý do thuộc tính không hoạt động:

<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

Đây là một câu trả lời tốt. Lưu ý rằng bạn là kỹ thuật _not_ polyfilling nó trong ví dụ này nhưng thay vì _ponyfilling_ nó (đôi khi tôi ghét thuật ngữ), vì vậy cách tiếp cận này sẽ tốt trong mã thư viện, nhưng nhập khẩu nó như 'import 'srcdoc-polyfill'' sẽ đẹp hơn trong mã ứng dụng, vì đó là loại điểm của polyfills. Btw, upvoted! –

+0

Tôi đoán nó chỉ làm đầy những iframe tồn tại trên trang khi polyfill được thực thi. – kemsky

+0

Không có nó không làm bất cứ điều gì, đó là OK. Bạn đang nhập hành vi sẽ được thực hiện thành nhiều phần và gọi nó là một hàm. –

Các vấn đề liên quan