我尝试使用以下代码获取 iFrame 的窗口:
var frameWindow = document.getElementById("loginframe");
var iWindow = frameWindow.contentWindow;
不幸的是,我不断收到以下错误:
Property 'contentWindow' does not exist on type 'HTMLElement'.)
正如您在下面的屏幕截图中看到的,“contentWindow”以红色突出显示,这是一个错误...
我尝试过转换:
let map = document.getElementById("loginframe") as HTMLObjectElement;
let insideDoc = map.contentDocument;
但这也不起作用......
这与我可能需要包含的 Angular 库有关吗?
最佳答案
首先,您不应该选择像这样的 DOM 元素,您应该使用 viewChild 来执行此操作。
<iframe src="urlHere" #loginframe ></iframe>
然后您可以在 TypeScript 代码中使用它,如下所示:
@ViewChild('loginframe') loginframe: ElementRef;
之后,您可以像这样选择元素:(注意:您应该将其转换为 HTMLIFrameElement
)
const win = (<HTMLIFrameElement> this.loginframe).nativeElement.contentWindow;
这是一个完全可用的 plnkr! (打开控制台查看输出)
关于javascript - 尝试获取 iFrame 窗口时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42566049/