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的一些方法介绍等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)