iframe自适应问题

iframeids[i] = iframeidsnums[i].id;

}

console.log(iframeids)

//如果用户的浏览器不支持iframe是否将iframe隐藏 yes 表示隐藏,no表示不隐藏

var iframehide = “yes”;

function dyniframesize() {

var dyniframe = new Array()

for (i = 0; i < iframeids.length; i++) {

if (document.getElementById) {

//自动调整iframe高度

dyniframe[dyniframe.length] = document.getElementById(iframeids[i]);

if (dyniframe[i] && !window.opera) {

dyniframe[i].style.display = “block”;

if (dyniframe[i].contentDocument && dyniframe[i].contentDocument.body.offsetHeight) {

dyniframe[i].style.height = (dyniframe[i].contentDocument.body.offsetHeight + 20) + ‘px’;

} else if (dyniframe[i].Document && dyniframe[i].Document.body.scrollHeight) {

dyniframe[i].height = dyniframe[i].Document.body.scrollHeight;

}

}

//根据设定的参数来处理不支持iframe的浏览器的显示问题

if ((document.all || document.getElementById) && iframehide == “no”) {

var tempobj = document.all ? document.all[iframeids[i]] : document.getElementById(iframeids[i]);

tempobj.style.display = “block”;

}

}

}

}

if (window.addEventListener) {

window.addEventListener(“load”, dyniframesize, false);

} else if (window.attachEvent) {

window.attachEvent(“onload”, dyniframesize);

} else {

window.onload = dyniframesize;

}

2.适用页面中有单个多种iframe的情况

function reinitIframe(val) {

var iframe = document.getElementById(val);

try {

var bHeight = iframe.contentWindow.document.body.scrollHeight;

var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;

var height = Math.max(bHeight, dHeight);

iframe.style.height = height + ‘px’;

} catch (ex) {}

}

window.onload = function () {

// reinitIframe(‘external-frame6’);

var iframeidsnums = document.getElementsByTagName(“IFRAME”)

for (let i = 0; i < iframeidsnums.length; i++) {

console.log(iframeidsnums[i].id)

reinitIframe(iframeidsnums[i].id);

}

};

3.适用页面中有单个多种iframe的情况

function reinitIframe(val) {

var iframe = document.getElementById(val);

try {

var bHeight = iframe.contentWindow.document.body.scrollHeight;

var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;

var height = Math.max(bHeight, dHeight);

iframe.style.height = height + ‘px’;

} catch (ex) {}

}

var iframeidsnums = document.getElementsByTagName(“IFRAME”)

for (let j = 0; j < iframeidsnums.length; j++) {

iframeidsnums[j].onload = function () {

console.log(iframeidsnums[j].id)

reinitIframe(iframeidsnums[j].id);

}

}

4.上面的自适应方法适应是没有问题的,但是由于我的使用场景不一样,因此会有出现一些小bug。

4.1 我的大概需求如下图

在页面上我有多个iframe标签,且经过tab的切换,切换到不同的iframe,我出现的问题是这个自适应效果值能是首屏显示的时候起到了自适应的效果。我百思不得其解,然后我追根溯源,实现iframe的自适应无非是为了使其中内容发生变化的时候计算总内容的高度,然后赋值给iframe标签,于是我想到,首屏既然可以自适应成功那说明逻辑上是没有问题的,于是开始排除。

  • 浏览器没有刷新

  • 在切换tab的时候iframe页面以及加载完毕,但是iframe没有来得及加载

解决方式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值