JS实现iframe高度自适应的问题

由于项目需要,要做一个静态站点作为展示,里面使用iframe来实现页面的切换显示。用iframe都知道高度自适应问题。现在使用的JS代码如下,可在IE和FF中正常显示,O... 由于项目需要,要做一个静态站点作为展示,里面使用iframe来实现页面的切换显示。
用iframe都知道高度自适应问题。
现在使用的JS代码如下,可在IE和FF中正常显示,OP,CHROME调试时提示错误:Failed to read "contentDocument " property from "HTMLFrameElement"
<script type="text/javascript" >
function turnHeight(iframe)
{
var frm = document.getElementById(iframe);
var subWeb = document.frames ? document.frames[iframe].document : frm.contentDocument;
if(frm != null && subWeb != null)
{ frm.height = subWeb.body.scrollHeight + 20;}
}
</script>

由于我对JS还是很陌生,所以提几个简单的问题:
1、什么是同域,跨域。我看百度上的解释说是,不同域名。但是我的iframed调用的子页面,跟父页面是在同一个目录,不同文件夹中的,这样也算跨域吗?
2、要做到比较好的兼容性,代码应该怎么修改呢?
展开
 我来答
xiii130
2014-09-15 · 知道合伙人软件行家
xiii130
知道合伙人软件行家
采纳数:817 获赞数:2867
爱好编程,在工作中积累了比较丰富的经验。愿与大家共同进步。

向TA提问 私信TA
展开全部
我看了一下代码,在Chrome下获取frame里面的document确实是用
document.getElementById('frameId').contentDocument;

这里报错的话,可能是因为Chrome没有获取到frame对象,你可以检查一下

简单的说跨域和同域
同域就是访问的文件和请求的发起文件都在同一域名下,即同一台服务器上,地址可以不加http://+域名

跨域就是访问的文件和请求发起的文件不在一台服务器上,发起方的请求地址必须加上http://+域名才可以访问到
更多追问追答
追问
我用alert在前端测试了一下,最初返回frm是[object HTMLFrameElement],但是到了onload的时候,就会出错,Console提示,同名字的网页,使用的端口不同,一个是21,一个是101。

也就是turnHeight使用21端口,但是id是“right”的框架使用的是101端口。

我就迷糊了,我并没有设置过101端口啊,为什么会这样呢?
追答
呃,我没有看到你的代码中出现onload,你是把onload写到iframe标签里的吗?
豆儓虾
2014-09-15 · TA获得超过345个赞
知道答主
回答量:175
采纳率:100%
帮助的人:58.2万
展开全部
1.js控制iframe

<div id="dd">132</div>
<script>
var s = '<iframe src="javascript:document.open();document.write(\'<script>alert(1);<\/script><div>test</div>\');document.close();"></iframe>';
document.getElementById("dd").innerHTML = s
</script>

<iframe id="tst" name="tst" ></iframe>
<script>
alert(2);
var cw = window.document.getElementById('tst').contentWindow;
cw.document.open();
cw.document.write('<script>alert("test")<' + '/script>');
cw.document.write('<div>test</div>');
cw.document.close();
</script>

IE6,IE7,FF2下测试通过

2.自适应高度
在id为"ifr"的iframe内容里写上js代码:

<script>
function resize(){
parent.document.getElementById('ifr').style.height = document.body.scrollHeight>300?document.body.scrollHeight:300+"px";
}
window.onload=resize;
window.onresize = resize;
</script>

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

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

·
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式