Maison >interface Web >js tutoriel >IFrame跨域高度自适应实现代码_javascript技巧

IFrame跨域高度自适应实现代码_javascript技巧

WBOY
WBOYoriginal
2016-05-16 17:50:411038parcourir
复制代码 代码如下:

var iframeids = ['memberIndexIframe','inquiryCenterIframe','everychinaBbsIframe'];
var iframehide = "yes";
function dynIframeSize(){
var dyniframe = [];
for(var i=0;iif(!document.getElementById) return false;
dyniframe[i] = 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].height = dyniframe[i].contentDocument.body.offsetHeight;
}else if(dyniframe[i].Document && dyniframe[i].Document.body.scrollHeight){
dyniframe[i].height = dyniframe[i].Document.body.scrollHeight;
}
}
if((document.all || document.getElement) && iframeids == "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;
}

对于上面的代码直接保存一个文件iframe.js,然后引用即可

注意:这段代码对于跨域的iframe引用不太适用,需要特别定义其iframe高度

下面这个代码是跨域的iframe高度

项目网站中需要嵌入合作网站的页面,这就需要页面的自适应高度变化,并且是跨域的。在网上看了许多资料,加上自己的实践,终于实现了跨域的IFrame自适应高度。如下:

首先,我的页面a.html需要引入对方的b.html,在这里运用iframe方式实现页面的套用
a.html页面的主要代码如下:
复制代码 代码如下:





a.html页面只是用来引入对方页面的一个简单页面 这就不多做介绍。
然后,最好在a.html同一级目录下,创建一个agent.html页面,该页面用来得到对方通过js传递过来的参数,
根据高度参数来调整a.html中的a_iframe的高度,主要代码如下:
Js代码
复制代码 代码如下:



最后,对方的页面(b.html),让对方在b.html中加入以下javascript代码
复制代码 代码如下:




通过 Math.max(clientHeight,scrollHeight)比较网页可见区域高,网页正文全文高这两者得到其中的较大的值后,
iframe将这个height通过src传递到我的agent.html,这样a.html中的Iframe就能自适应对方的b.html高度了。这里在IE下测试的没问题,其它浏览器没测试。
在实现这个功能的过程中,在网上发现了一段很有用的获取页面高度的js,在这里也记录、引用下:
复制代码 代码如下:

<script> <BR>var strInfo=" " ; <BR>strInfo+=" \r\n网页可见区域宽:" +document.body.clientWidth; <BR>strInfo+=" \r\n网页可见区域高:" +document.body.clientHeight; <BR>strInfo+=" \r\n网页可见区域宽:" +document.body.offsetWidth+" (包括边线的宽)" ; <BR>strInfo+=" \r\n网页可见区域高:" +document.body.offsetHeight+" (包括边线的宽)" ; <BR>strInfo+=" \r\n网页正文全文宽:" +document.body.scrollWidth; <BR>strInfo+=" \r\n网页正文全文高:" +document.body.scrollHeight; <BR>strInfo+=" \r\n网页被卷去的高:" +document.body.scrollTop; <BR>strInfo+=" \r\n网页被卷去的左:" +document.body.scrollLeft; <BR>strInfo+=" \r\n网页正文部分上:" +window.screenTop; <BR>strInfo+=" \r\n网页正文部分左:" +window.screenLeft; <BR>strInfo+=" \r\n屏幕分辨率的高:" +window.screen.height; <BR>strInfo+=" \r\n屏幕分辨率的宽:" +window.screen.width; <BR>strInfo+=" \r\n屏幕可用工作区高度:" +window.screen.availHeight; <BR>strInfo+=" \r\n屏幕可用工作区宽度:" +window.screen.availWidth; <BR>window.confirm(strInfo); <BR></script>
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn