什么是HiddenFrame
习惯上称为“隐藏帧”
<iframe style="display:none" name="HiddenFrame" />
在开发中遇到如下情况可以考虑使用HiddenFrame
(1)在弹出子窗口中进行一定操作后,要将此页进行提交,如使用普通方式向目标页提交,则会再次弹出一个页面(目标页)
此时利用HiddenFrame可以解决:
在子窗口中加入上述的<iframe>
<form name="xx" method="post" action="目标页">
进行提交的JavaScript方法中
xx.target="HiddenFrame"
xx.submit()
(2)页面中左侧为列表项,点击某一项,右侧出现相应的内容
普通方法一:
右侧使用<iframe>,但可能出现双滚动条,影响美观
另一种方法:
右侧使用include方式嵌入页面,但每点一项整个页面会刷一次,效果不好
利用HiddenFrame来解决问题:
在页面中加入上述<iframe>
在Head部分
<script>
function getXXX(strID){
HiddenFrame.location.href="目标页.jsp?OID="+strID
}
</script>
在页面末端
<script>
getXXX(" ") //调用 当首次打开页面时执行
</script>
注意:iframe要放在页面末端script的上面(如果在script中要调用这个iframe)
一般情况下iframe会放在页面最下面</html>前
在左侧列表中各项的onclick中调用 getXXX("传入标识id")
右侧可以放一个<td id="showContent"></td>
目标页面(全部放入script):
<script>
var strReturn="<table>";
<%
//jsp操作代码
String st=request.getParameter("标识id"); //获取左侧传入的OID
//根据不同的参数得到不同的Content(此处可以进行数据库操作等)
//构造客户端输出
out.println("strReturn=strReturn+\"<tr>\";");
out.println("strReturn=strReturn+\"<td>\";");
out.println("strReturn=strReturn+\""+content+"\";");
out.println("strReturn=strReturn+\"+</td>+\";");
out.println("strReturn=strReturn+\"+</tr>+\";");
%>
strReturn=strReturn+"</table>";
parent.document.all.showContent.innerHTML=strReturn; //赋给右侧的td
</script>