手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >IFrame跨域高度自适应实现代码
IFrame跨域高度自适应实现代码
摘要:复制代码代码如下:variframeids=['memberIndexIframe','inquiryCenterIframe','ever...

复制代码 代码如下:

var iframeids = ['memberIndexIframe','inquiryCenterIframe','everychinaBbsIframe'];

var iframehide = "yes";

function dynIframeSize(){

var dyniframe = [];

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

if(!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页面的主要代码如下:

复制代码 代码如下:

<BODY>

<iframe width="100%" id="a_iframe" name="a_iframe" src="http://对方域名/b.html"

frameborder="no" border="0px" scrolling="no" allowtransparency="yes" ></iframe>

</BODY>

a.html页面只是用来引入对方页面的一个简单页面 这就不多做介绍。

然后,最好在a.html同一级目录下,创建一个agent.html页面,该页面用来得到对方通过js传递过来的参数,

根据高度参数来调整a.html中的a_iframe的高度,主要代码如下:

Js代码

复制代码 代码如下:

<script type="text/javascript">

//得到a.html中的a_iframe

var a_iframe = parent.parent.document.getElementById("a_iframe");

//<SPAN>location.hash用来获取页面的标签值</SPAN>

,这个值通过b.html中的js函数改变。包括height属性

var hash_url = window.location.hash;

//得到b.html传递过来的height属性

var hash_height = hash_url.split("#")[1]+"px";

//调整a_iframe的height,达到自适应

a_iframe.height = hash_height;

</script>

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

复制代码 代码如下:

<iframe id="b_iframe" width="100%" src="http://我的域名/../agent.html">

</iframe>

<script type="text/javascript">

var b_height = Math.max(document.body.scrollHeight,document.body.clientHeight);

var b_iframe = document.getElementById("b_iframe");

b_iframe.src = b_frame.src+"#"+b_height;

</script>

通过 Math.max(clientHeight,scrollHeight)比较网页可见区域高,网页正文全文高这两者得到其中的较大的值后,

iframe将这个height通过src传递到我的agent.html,这样a.html中的Iframe就能自适应对方的b.html高度了。这里在IE下测试的没问题,其它浏览器没测试。

在实现这个功能的过程中,在网上发现了一段很有用的获取页面高度的js,在这里也记录、引用下:

复制代码 代码如下:

<script>

var strInfo=" " ;

strInfo+=" rn网页可见区域宽:" +document.body.clientWidth;

strInfo+=" rn网页可见区域高:" +document.body.clientHeight;

strInfo+=" rn网页可见区域宽:" +document.body.offsetWidth+" (包括边线的宽)" ;

strInfo+=" rn网页可见区域高:" +document.body.offsetHeight+" (包括边线的宽)" ;

strInfo+=" rn网页正文全文宽:" +document.body.scrollWidth;

strInfo+=" rn网页正文全文高:" +document.body.scrollHeight;

strInfo+=" rn网页被卷去的高:" +document.body.scrollTop;

strInfo+=" rn网页被卷去的左:" +document.body.scrollLeft;

strInfo+=" rn网页正文部分上:" +window.screenTop;

strInfo+=" rn网页正文部分左:" +window.screenLeft;

strInfo+=" rn屏幕分辨率的高:" +window.screen.height;

strInfo+=" rn屏幕分辨率的宽:" +window.screen.width;

strInfo+=" rn屏幕可用工作区高度:" +window.screen.availHeight;

strInfo+=" rn屏幕可用工作区宽度:" +window.screen.availWidth;

window.confirm(strInfo);

</script>

【IFrame跨域高度自适应实现代码】相关文章:

详解JavaScript中Date.UTC()方法的使用

图片分页查看 原创

JavaScript实现点击自动选择TextArea文本的方法

强制设为首页代码

javascript实现youku的视频代码自适应宽度

Jquery中基本选择器用法实例详解

JS函数实现鼠标指向图片后显示大图代码

手机端页面rem宽度自适应脚本

关于IFRAME 自适应高度的研究

一段实时更新的时间代码

精品推荐
分类导航