如何获取Frameset内frame文档高度
default.html现有一框架如下<framesetcols="120,*"><framesrc="left.htm"noscroll="yes"frameborde...
default.html现有一框架如下
<frameset cols="120,*">
<frame src="left.htm" noscroll="yes" frameborder="0" border=0>
<frameset rows="50,*,*" id="rightFrame" scrolling="yes">
<frame src="top.htm" id="topFrame" name="topFrame" frameborder="0" scrolling="no" >
<frame src="main.aspx" id="mainFrame" name="mainFrame" frameborder="0" scrolling="no">
<frame src="bottom.htm" id="bottomFrame" name="mainFrame" frameborder="0" scrolling="no" >
</frameset>
main.aspx内容每次都不一样,即高度会随内容变化。
现在我需要在此页页通过javascript获取main.aspx页面内容的高度,然后设置rightFrame.rows
请问如何获取main.aspx的高度
上面的name是写错了,不过没影响。
我试过用scrollHeight获取main.aspx的高度,但返回的始终是19,另外是不是要等待main.aspx的内容加载完成后,才知道内容的实际高度呢?main.aspx加载可能需要几秒钟时间。
因为main.aspx有多个页面会使用它,所以尽量不要在main.aspx里添加东西,能否就在default.html里完成我提到的功能呢?
谢谢! 展开
<frameset cols="120,*">
<frame src="left.htm" noscroll="yes" frameborder="0" border=0>
<frameset rows="50,*,*" id="rightFrame" scrolling="yes">
<frame src="top.htm" id="topFrame" name="topFrame" frameborder="0" scrolling="no" >
<frame src="main.aspx" id="mainFrame" name="mainFrame" frameborder="0" scrolling="no">
<frame src="bottom.htm" id="bottomFrame" name="mainFrame" frameborder="0" scrolling="no" >
</frameset>
main.aspx内容每次都不一样,即高度会随内容变化。
现在我需要在此页页通过javascript获取main.aspx页面内容的高度,然后设置rightFrame.rows
请问如何获取main.aspx的高度
上面的name是写错了,不过没影响。
我试过用scrollHeight获取main.aspx的高度,但返回的始终是19,另外是不是要等待main.aspx的内容加载完成后,才知道内容的实际高度呢?main.aspx加载可能需要几秒钟时间。
因为main.aspx有多个页面会使用它,所以尽量不要在main.aspx里添加东西,能否就在default.html里完成我提到的功能呢?
谢谢! 展开
4个回答
展开全部
你的意思是想根据mainFrame里面的实际内容动态的更改它的高是吗?
那你可以在main.aspx初始化写上这样一句
function screeChange(){
window.parent.document.getElementById('rightFrame').rows="50,"+document.body.scrollHeight+",100";
}
</script>
body里面加上:onload="screeChange()"
注意一定要在body里面或者它的后面初始化,不然获取不到内容高度。
其中document.body.scrollHeight获取main.aspx页面的实际文本高度,然后赋值给它的父窗体中的rightFrame的row值。。。
另外:<frame src="bottom.htm" id="bottomFrame" name="mainFrame" frameborder="0" scrolling="no" >
这个name值是不是写错鸟。。。。
另外在asp.net编程中。。。建议舍弃frameset 使用irame哈。。
那你可以在main.aspx初始化写上这样一句
function screeChange(){
window.parent.document.getElementById('rightFrame').rows="50,"+document.body.scrollHeight+",100";
}
</script>
body里面加上:onload="screeChange()"
注意一定要在body里面或者它的后面初始化,不然获取不到内容高度。
其中document.body.scrollHeight获取main.aspx页面的实际文本高度,然后赋值给它的父窗体中的rightFrame的row值。。。
另外:<frame src="bottom.htm" id="bottomFrame" name="mainFrame" frameborder="0" scrolling="no" >
这个name值是不是写错鸟。。。。
另外在asp.net编程中。。。建议舍弃frameset 使用irame哈。。
展开全部
在外层获取高度有点麻烦,建议你写到内层去,在外层获取高度麻烦是因为你不知道内层的网页什么时候加载完并渲染完成,取到的高度基本上都是0,不过也不是完全没有办法,监视内层document的readyState属性,加载完成后才能取到高度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不要用frameset,用<iframe></iframe>,即美观,又好控制.
<iframe src="(文件路径)" width="(此框架的显示宽度,可以为像素值和百分比值)" heigth="(与width相同)"></ifrmae>
<iframe src="(文件路径)" width="(此框架的显示宽度,可以为像素值和百分比值)" heigth="(与width相同)"></ifrmae>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
rows="50,*,*" 代表3个frame的宽度分别为50,*,*.*代表所有,高度同理rows去掉,设cols="100,*,200";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询