js写入的iframe自适应高度问题(急)

js写入的iframe自适应高度问题(急),第1张

1js控制iframe

<div id="dd">132</div>

<script>

var s = '<iframe src="javascript:documentopen();documentwrite(\'<script>alert(1);<\/script><div>test</div>\');documentclose();"></iframe>';

documentgetElementById("dd")innerHTML = s

</script>

<iframe id="tst" name="tst" ></iframe>

<script>

alert(2);

var cw = windowdocumentgetElementById('tst')contentWindow;

cwdocumentopen();

cwdocumentwrite('<script>alert("test")<' + '/script>');

cwdocumentwrite('<div>test</div>');

cwdocumentclose();

</script>

IE6,IE7,FF2下测试通过

2自适应高度

在id为"ifr"的iframe内容里写上js代码:

<script>

function resize(){

parentdocumentgetElementById('ifr')styleheight = documentbodyscrollHeight>300documentbodyscrollHeight:300+"px";

}

windowonload=resize;

windowonresize = resize;

</script>

就能控制id为"ifr"高度至少为300px

要是回答的内容有问题,或认为不妥,请发送百度消息给我,消息内容加上本页网址哦。。

·

几个办法,一是在iframe onload的时候计算并设置iframe高度,另一个是定期运行js函数来检查并设置iframe高度,有篇文章不错(>

获得iframe的window对象 存在跨域访问限制

chrome iframeElement contentWindow firefox iframeElement contentWindow ie iframeElement contentWindow

文章Iframes onload and document domain中说“he iframe element object has a property called contentDocument that contains the iframe s document object so you can use the parentWindow property to retrieve the window object ”意思就是一些浏览器可以通过iframeElement contentDocument parentWindow获得iframe的 window对象 但经过测试firefox chrome的element contentDocument对象没有parentWindow属性

(javascript)

复制代码 代码如下: function getIframeWindow(element){ return element contentWindow; //return element contentWindow || element contentDocument parentWindow; }

获得iframe的document对象 存在跨域访问限制

chrome iframeElement contentDocument firefox iframeElement contentDocument ie element contentWindow document 备注 ie没有iframeElement contentDocument属性

(javascript)

复制代码 代码如下: var getIframeDocument = function(element) { return element contentDocument || element contentWindow document; };

iframe中获得父页面的window对象 存在跨域访问限制

页面 window parent 顶层页面 window top 适用于所有浏览器

获得iframe在父页面中的标签 存在跨域访问限制

window frameElement(类型 HTMLElement) 适用于所有浏览器

iframe的onload事件 非ie浏览器都提供了onload事件 例如下面代码在ie中是不会有d出框的

(javascript)

复制代码 代码如下: var ifr = document createElement( iframe ); ifr src = ; ifr onload = function() { alert( loaded ); }; document body appendChild(ifr);

但是ie却又似乎提供了onload事件 下面两种方法都会触发onload

方法一

复制代码 代码如下: <iframe onload="alert( loaded );" src="

方法二 //只有ie才支持为createElement传递这样的参数

复制代码 代码如下: var ifr = document createElement( <iframe onload="alert( loaded );" src=" ); document body appendChild(ifr);

由于iframe元素包含于父级页面中 因此以上方法均不存在跨域问题

实际上IE提供了onload事件 但必须使用attachEvent进行绑定

复制代码 代码如下: var ifr = document createElement( iframe ); ifr src = ; if (ifr attachEvent) { ifr attachEvent( onload function(){ alert( loaded ); }); } else { ifr onload = function() { alert( loaded ); }; } document body appendChild(ifr);

frames window frames可以取到页面中的帧(iframe frame等) 需要注意的是取到的是window对象 而不是HTMLElement

复制代码 代码如下: lishixinzhi/Article/program/Java/JSP/201311/19939

HTML的frame框架自适应高度的6个方法:

1、可以给它添加一个默认的CSS的min-height值,然后同时使用JavaScript改变高度。常用的兼容代码有:

// documentdomain = "caibaojiancom";

function setIframeHeight(iframe) {

if (iframe) {

var iframeWin = iframecontentWindow || iframecontentDocumentparentWindow;

if (iframeWindocumentbody) {

iframeheight = iframeWindocumentdocumentElementscrollHeight || iframeWindocumentbodyscrollHeight;

}

}

};

windowonload = function () {

setIframeHeight(documentgetElementById('external-frame'));

};

(如果在同个顶级域名下,不同子域名之间互通信息,设置documentdomain="域名com"

2、只要修改以上的iframe的ID即可了。或者你可以直接在iframe里面写代码,我们一般为了不污染HTML代码,建议使用上面的代码。

<iframe src="backtophtml" frameborder="0" scrolling="no" id="external-frame" onload="setIframeHeight(this)"></iframe>

3、多个iframe的情况下

<script language="javascript">

//输入你希望根据页面高度自动调整高度的iframe的名称的列表

//用逗号把每个iframe的ID分隔 例如: ["myframe1", "myframe2"],可以只有一个窗体,则不用逗号。

//定义iframe的ID

var iframeids=["test"];

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

var iframehide="yes";

function dyniframesize()

{

var dyniframe=new Array()

for (i=0; i<iframeidslength; i++)

{

if (documentgetElementById)

{

//自动调整iframe高度

dyniframe[dyniframelength] = documentgetElementById(iframeids[i]);

if (dyniframe[i] && !windowopera)

{

dyniframe[i]styledisplay="block";

if (dyniframe[i]contentDocument && dyniframe[i]contentDocumentbodyoffsetHeight) //如果用户的浏览器是NetScape

dyniframe[i]height = dyniframe[i]contentDocumentbodyoffsetHeight;

else if (dyniframe[i]Document && dyniframe[i]DocumentbodyscrollHeight) //如果用户的浏览器是IE

dyniframe[i]height = dyniframe[i]DocumentbodyscrollHeight;

}

}

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

if ((documentall || documentgetElementById) && iframehide=="no")

{

var tempobj=documentall documentall[iframeids[i]] : documentgetElementById(iframeids[i]);

tempobjstyledisplay="block";

}

}

}

if (windowaddEventListener)

windowaddEventListener("load", dyniframesize, false);

else if (windowattachEvent)

windowattachEvent("onload", dyniframesize);

else

windowonload=dyniframesize;

</script>

4、打开调试运行窗口可以看到运行。·

跨域下的iframe自适应高度

跨域的时候,由于js的同源策略,父页面内的js不能获取到iframe页面的高度。需要一个页面来做代理。

方法如下:假设>

ahtml中包含iframe:

<iframe src=";

5、在chtml中加入如下代码:

<iframe id="c_iframe"  height="0" width="0"  src=";

6、最后,agenthtml中放入一段js:

<script type="text/javascript">

var b_iframe = windowparentparentdocumentgetElementById("Iframe");

var hash_url = windowlocationhash;

if(hash_urlindexOf("#")>=0){

var hash_width = hash_urlsplit("#")[1]split("|")[0]+"px";

var hash_height = hash_urlsplit("#")[1]split("|")[1]+"px";

b_iframestylewidth = hash_width;

b_iframestyleheight = hash_height;

}

</script>

agenthtml从URL中获得宽度值和高度值,并设置iframe的高度和宽度(因为agenthtml在>

<script type="text/javascript">

function setHeight(){

var iframe = documentgetElementById("iframe_id");

try{

var aHeight = iframecontentWindowdocumentbodyscrollHeight;

var bHeight = iframecontentWindowdocumentdocumentElementscrollHeight;

var height = Mathmax(aHeight, bHeight);//取最高值;

iframeheight = height;

}catch (e){}

}

</script>

在iframe中把height="XXX"不要 加入onload="setHeight()"

以上就是关于js写入的iframe自适应高度问题(急)全部的内容,包括:js写入的iframe自适应高度问题(急)、Iframe的代码怎么写才能满足我的自适应内容的高度的要求啊、js *** 作iframe的一些方法介绍等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9780948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存