2017-03-02 43 views
0

我試圖用下面的代碼來獲得一個iFrame窗口的窗口:錯誤試圖獲得的iFrame

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

不幸的是,我不斷收到以下錯誤:

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

正如你可以在下面的截圖中看到,「contentWindow」以紅色突出顯示,這是一個錯誤...

enter image description here

我已經試過鑄造:

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

但是,這也不行......

這是事做,也許我需要包括角庫?

回答

0

首先你不應該選擇一個像這樣的DOM元素,你應該使用viewChild來做到這一點。

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

然後你就可以在你的打字稿代碼中使用這樣的:

@ViewChild('loginframe') loginframe: ElementRef; 

之後,你可以選擇這樣的元素:(注意:你應該把它轉換爲HTMLIFrameElement

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

這是一個完全有效的plnkr! (打開你的控制檯看到輸出)

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

+0

看起來很有希望,但我得到這個錯誤:類型「ElementRef」不能轉換爲類型「HTMLIFrameElement」(...有什麼奇怪的是,如果我強迫TEH應用程序加載一個損壞的模塊,刪除它,然後重新加載...它的工作。但是,當我嘗試從頭開始構建,它再次打破!) – HappyCoder

+0

謝謝你的努力,這有助於我解決問題。我改變了這一行:( this.loginframe).nativeElement.contentWindow;到這一行:this.iframe.nativeElement.contentWindow – HappyCoder

相關問題