说明一下下面都是我在做项目时的方法但查window.showModalDialog();会弹出当前页面脚本发生错误时没有方法所以我选择一个自认为可以的方法解决这个问题
一、首先说说我要做的效果是什么:
如下表 我要点击详细请点击就会弹出一个二级菜单
然后我会在二级菜单中可以有下载选项可供下载
二、 window.open() 及 window.showModalDialog()的格式及台数
2.1 window.open()
2.1.1基本语法
window.open(pageURL,name,parameters)其中:
pageURL 为子窗口路径
name 为子窗口句柄
parameters 为窗口参数 ( 各参数用逗号分隔 )
2.1.2示例
<SCRIPT>
<!--
window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')
//写成一行
-->
</SCRIPT>
2.2 window.showModalDialog()
2.2.1基本语法
vReturnValue =window.showModalDialog(sURL [, vArguments] [,sFeatures])
sURL -- 必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
vArguments-- 可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。
2.2.2例子(转)
参数传递:
1. 要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大
为 4096 个字符。也可以传递对象,例如:-------------------------------
parent.htm
<script>
var obj = new Object();
obj.name="51js";
window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");
</script>
modal.htm
<script>
var obj = window.dialogArguments
alert("您传递的参数为:" + obj.name)
</script>
-------------------------------
2. 可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:
------------------------------
parent.htm
<script>
str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px");
alert(str);
</script>
modal.htm
<script>
window.returnValue="http://homepage.yesky.com";
</script>
用window.showModalDialog 或者window.showModelessDialog打开一个模式窗口后,和父窗口的一些交互问题。
要进行交互操作的前提,在调用showModalDialog或者showModelessDialog方法的时候,第二个参数传window,如:
1. window.showModelessDialog('filename.htm',window,'dialogWidth=200px;dialogHeight=250px;')
接下来,就是取得父窗口的一些数据和方法,这是经常会用的,父窗口取子窗口的参数一般通过returnValue就可以搞定了~
1. //取得父窗口的JS变量 var
window.dialogArguments.var;
//获得父窗口的对象和属性
window.dialogArguments.form1.name.value ;
//调用父窗口的方法 fun
window.dialogArguments.fun() ;
例:
a.htm:<SCRIPT language="javascript">
<!--
function OpenWin()
{
var getv = showModalDialog("eg.htm", "egwin", "dialogWidth:420px; dialogHeight:220px;status:no;help:yes");
if (getv != null)
{
TextInfo.value=getv.split(",")[0];;
aa.value=getv.split(",")[1];;
}
}
//-->
</SCRIPT>
</head>
<input type="text" name="TextInfo">
<input type="text" name="aa">
<input type="button" name="Submit" value="打开" onClick="OpenWin()">
eg.htm:
<SCRIPT language="javascript">
<!--
function GetValue()
{
window.returnValue=TextName.value+","+aa.value;
window.close();
}
//-->
</SCRIPT>
<input name="TextName" type="text" id="TextName" value="因为有你而精彩">
<input name="aa" type="text" id="aa" value="MKLove">
<input type="button" name="Submit" value="关闭" onClick="GetValue()">
</p>
</div>
</body>
</html>
三、遇到的问题
3.1、 js中要如何才能取到jsp遍历的值
(这是我自己的方法如果还有其他方法麻烦留言指导一下)
一般用到二级页面我们会想到js中写但不能准确的传到值所以我在直接在<a>标签onclick那写js
<c:forEach>
<a herf="#" οnclick="window.showModalDialog('${pageContext.request.contextPath} /downFilep.jsp?foreignIdf=${vo.foreignIdf}',null,'dialogWidth:450px;dialogHeight:150px');">详细请点击</a></td>
</ c:forEach >
3.2用window.showModalDialog()会在第二级页面点击下载时会出现以下界面
这个时候可以百度一下你就可以知道好多知识(废话)
百度有:
所以我用了window.open()
<a herf="#"οnclick="window.open('${pageContext.request.contextPath} /downFilep.jsp?foreignIdf=${vo.foreignIdf}','_blank','width=450px,height=150px,top=300px,left=450px,titlebar=no,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no');">详细请点击</a></td>
四、我的代码
Archivefiles.jsp
<!-- 省略一部分 --->
<table>
<c:forEach>
<!-- 省略一部分 --->
<tr><a herf="#"οnclick="window.open('${pageContext.request.contextPath} /downFilep.jsp?foreignIdf=${vo.foreignIdf}','_blank', 'width=450px,height=150px,top=300px,left=450px,titlebar=no,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no');">详细请点击</a>
</tr>
</c:forEach>
</table>
Downfilep.jsp
<%@ page language="java" pageEncoding="utf-8" %>
<%@ page contentType="text/html;charset=utf-8"%>
<%@ include file="/talent/base/talenttemplate2.jsp" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%
String foreignIdf=request.getParameter("foreignIdf");
%>
下载详细:
<!--
-->
<form action="${pageContext.request.contextPath}/downFilep.action" enctype="multipart/form-data" method="post">
< downloadf foreignId="<%=foreignIdf %>" userTypef="1" disabled="true"></ downloadf ><!-- 这个是自己做的标签主要是用于下载 -->
</form>
【注】这只是一部分代码 我用SSI的所以action及struts的配置都没有写出来这些都可以在度娘,谷哥找到的
还有这个只是我的问题,有其他建议请留言指导一下!!