获取iframe内容相关记录

前提:公司一组件可通过id获取富文本内容添加到一个iframe内展现。但是添加后iframe的高度需要自己去获取然后添加,之前的开发者使用iframeDom.contentDocument.scrollingElement.scrollHeight获取iframe内容高度,但是却不稳定,测试多次成功率低,总是拿到0,还未深究,先初步了解了下。不多说上代码:

一、HTMLIFrameElement.contenDocument(只读)

返回<iframe>元素document对象,ie8以上兼容

var iframeDocument = document.getElementsByTagName("iframe")[0].contentDocument;
iframeDocument.body
// ==> #document
iframeDocument.body.scrollHeight  // 拿高度
// ==> 我拿到为0
iframeDocument.scrollingElement
// ==> #document
iframeDocument.scrollingElement.scrollHeight // 拿高度
// ==> 我拿到为0

由此可看到,我们调用可获取相关的操作属性,这里没有扩展,可以自己尝试在console打印看看,肯定能找到需要的。

二、HTMLIFrameElement.contentWindow(只读)

返回<iframe>元素window对象,几乎无兼容问题

var iframeWindow = document.getElementsByTagName("iframe")[0].contentWindow;

三、jquery:$('iframe').contents().find('body')

我的问题重点解决方案吧,也刚好公司项目用jq,很方便的就可以获取

$('iframe').contents().find('body').height(); // 拿到高度
//  ==> 我拿到根据body下内容的获取到的高度 
  1. contents() 返回所有直接子元素,包括被选元素的文本和注释节点;

    类似children()返回所有子元素,但是contents()包括了文本和注释节点,且contents()可以访问到iframe 的 HTML,这也是用contents()的原因。

  2. find() 返回被选元素的后代元素;

  3. height() 方法设置或返回被选元素的高度;

最后:解决无法拿到iframe高度问题,今日大概记录下,更多详细多了解再补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值