获取子iframe框架的元素

我们常常遇到使用iframe框的时候,该iframe框不能根据自己内部的内容撑起来的这种问题
必要条件:不能在跨域的情况下。。。本地可以放到localhost下进行测试

//父页面index.html页面

//框架iframe.html


我是iframe1的内容
我是iframe1的内容
我是iframe1的内容
我是iframe1的内容
我是iframe1的内容
我是iframe1的内容
我是iframe1的内容
我是iframe1的内容
我是iframe1的内容
我是iframe1的内容
我 是iframe1的内容
我是iframe1的内容
我是iframe1的内容
我是iframe1的内容


如何 获取子iframe框 的元素呢??

window.frames['iframe1'].document.getElementById('btn1');//获取name为iframe1的btn1

//比如你可以给它添加事件:
window.frames['iframe1'].document.getElementById('btn1').onclick = function(){
alert(1)
}
注意 要将代码放到window.onload = function(){...}里,否则因为没有加载完全dom节点会报错

如何 获取父iframe框 的元素呢??

parent.document.getElementById('click-btn').onclick = function() {
console.log('打印父元素中点击的节点内容:'+ this.innerHTML);
}//在iframe框中获取父页面的节点

最后,让子iframe框架高度自适应代码:

// 计算页面的实际高度,iframe高度自适应
function calcPageHeight(doc) {
var cHeight = Math.max(doc.body.clientHeight, doc.documentElement.clientHeight)
var sHeight = Math.max(doc.body.scrollHeight, doc.documentElement.scrollHeight)
var height = Math.max(cHeight, sHeight)
return height
}
var ifr = document.getElementById('ifr')
ifr.onload = function() {
var iDoc = ifr.contentDocument || ifr.document
var height = calcPageHeight(iDoc)
ifr.style.height = height + 'px'
}

posted @ 2017-06-01 11:31  geekfeier  阅读(820)  评论(0)    收藏  举报