2017-03-02 2 views
0

Ich bin versucht, das Fenster eines iFrame mit dem folgenden Code zu erhalten:Fehler beim Fenster von iFrame bekommen

var frameWindow = document.getElementById("loginframe"); 
    var iWindow = frameWindow.contentWindow; 

Leider halte ich die folgende Fehlermeldung erhalten:

Property 'contentWindow' does not exist on type 'HTMLElement'.) 

Wie Sie sehen im Screenshot unten „contentWindow“ ist rot markiert, die ein Fehler ist ...

enter image description here

Ich habe versucht, Casting:

let map = document.getElementById("loginframe") as HTMLObjectElement; 
    let insideDoc = map.contentDocument; 

Aber das funktioniert auch nicht ...

dies etwas ist, mit Winkel Bibliotheken zu tun, die vielleicht muss ich ein?

Antwort

0

Zuerst sollten Sie kein DOM-Element wie dieses auswählen, Sie sollten ein ViewChild verwenden, um das zu tun.

<iframe src="urlHere" #loginframe ></iframe> 

Dann können Sie es in Ihrem Typoskript Code verwenden:

@ViewChild('loginframe') loginframe: ElementRef; 

Danach können Sie das Element wie folgt auswählen: (Anmerkung: Sie sollten es auf eine HTMLIFrameElement cast)

const win = (<HTMLIFrameElement> this.loginframe).nativeElement.contentWindow; 

Hier ist eine voll funktionsfähige PLNKR! (Öffnen Sie die Konsole, um die Ausgabe zu sehen)

https://embed.plnkr.co/kicS6o8QlOEcXyMKNjFi/

+0

sieht vielversprechend aus, aber bekomme ich diesen Fehler: Typ ‚ElementRef‘ kann nicht auf den Typ umgewandelt werden ‚HTMLIFrameElement‘ (... was seltsam ist, dass, wenn ich teh zwingen Anwendung, um ein defektes Modul zu laden, es zu entfernen, dann neu zu laden ... es funktioniert. Aber dann, sobald ich versuche und von Grund auf neu zu bauen, bricht es wieder!) – HappyCoder

+0

Vielen Dank für Ihre Bemühungen, dies hat mir bei der Lösung geholfen das Problem. Ich habe diese Zeile geändert: ( this.loginframe) .nativeElement.contentWindow; zu dieser Zeile: this.iframe.nativeElement.contentWindow – HappyCoder

Verwandte Themen