无法获取弹出层window对象里的内容,或无法读取

原文链接无法获取弹出层window对象里的内容

问题的根本原因是异步问题,下面来细细分析:

我打印了 三个内容:

console.log(iframeWindow)                          //打印弹出层window
console.log(iframeWindow.contentWindow)            //打印弹出层window的内容contentWindow
console.log(iframeWindow.contentWindow.layui)      // 打印contentWindow里的layui

控制台的输出是:

可以看到第一个 iframeWindow 是存在的, iframeWindow.contentWindow 是的,而 iframeWindow.contentWindow.layui 是没有定义的。

可当我打开 iframeWindow 却可以看到 iframeWindow.contentWindow 和 iframeWindow.contentWindow.layui 都是存在的。然而真相究竟是?

新机子哇宜自谋西偷子:

虽然 iframeWindow 已经率先打印出来结果,但是它在打印的时候我们的 iframe 页面是还没有渲染完成的,所以 iframeWindow 即使存在,但和它同时打印的 iframeWindow.contentWindow 和 iframeWindow.contentWindow.layui 是没有内容的。

说到这有人就要问了,那为什么我打开控制台打印的 iframeWindow 里面有iframeWindow.contentWindow 和 iframeWindow.contentWindow.layui 的内容呢?

真相是在我们没有点开它的时候,它确实是没有内容的,但我们点击它之后,这小子又去偷摸着加载了一遍,所以我们实际上看到它是有内容的。

那这样的问题要怎么解决呢?

方式一:

延迟函数,setTimeout(function(){},毫秒数),设置延迟加载时间200,300,500,1000...,确保iframe页面加载完成后再读取。缺点是不能确定的毫秒数。

方式二:

试图用 while 循环持续获取,while(iframeWindow.layui.form == undefined && i<1000),加上i<1000是为了防止陷入死循环,但不论循环多少次仍旧获取不到 layui ,此方式仍在研究当中....

如果各位朋友、前辈有不同的解决办法,敬请指出!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值