javascript - 尝试获取 iFrame 窗口时出错

标签 javascript angular

我尝试使用以下代码获取 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; 

但这也不起作用......

这与我可能需要包含的 Angular 库有关吗?

最佳答案

首先,您不应该选择像这样的 DOM 元素,您应该使用 viewChild 来执行此操作。

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

然后您可以在 TypeScript 代码中使用它,如下所示:

@ViewChild('loginframe') loginframe: ElementRef;

之后,您可以像这样选择元素:(注意:您应该将其转换为 HTMLIFrameElement)

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

这是一个完全可用的 plnkr! (打开控制台查看输出)

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

关于javascript - 尝试获取 iFrame 窗口时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42566049/

相关文章:

多次调用 Angular Service 单例构造函数

javascript - 如何从连接到 Mongodb 的 Node 中的函数返回数据?

C# 正则表达式删除 C 风格注释并提取括号之间的文本

javascript - Bootstrap 4 使用 JSON 进行模态验证

angular - ng-bootstrap Datepicker 当前日期,如占位符

angular - Fork 加入两个 firebase observable

javascript - 捆绑我的 JS/TS 项目是反模式吗?

Angular 8 - SimpleChange 类中的 firstChange 与 isFirstChange()

php file_put_contents 无法在 apache 服务器目录上创建文件

javascript - Redux:使用 compose() 或不使用它的 applyMiddleware 之间的区别?