请教一个关于javascript父窗口打开子窗口的问题,为什么子窗口里的window.opener是undefined

demo2.jsp的代码
<form name="form1" action="test.html" method="post" >
客户id: <input type="text" name="cid" value="" id="cid" ><br>
客户名称<input type="text" name="cname" value="" id="cname" >
<input type="button" name="ok" value="请选择客户" onclick="openWin();"/>
</form>
<script type="text/javascript">
function openWin(){
window.open("index.jsp",null, "_blank", "toolbar=no,status=no");
}
</script>

<script type="text/javascript">
function viewData(pid,name){
//得到父窗口的对象
alert(window.opener);
var parentwindow= window.opener;

parentwindow.document.getElementById("cid").value=pid;
parentwindow.document.getElementById("cname").value=name;
window.close();
}
</script>
<body>
<table border="1">
<body>
<form name="form1" action="test.html" method="post" >
客户id: <input type="text" name="cid" value="" id="cid" ><br>
客户名称<input type="text" name="cname" value="" id="cname" >
<input type="button" name="ok" value="请选择客户" onclick="openWin();"/>
</form>
<script type="text/javascript">
function openWin(){
window.open("index.jsp", "_blank", "toolbar=no,status=no");
}
</script>
</body>

index.jsp
<tr>
<td>操作</td>
<td>客户id</td>
<td>客户名称</td>
</tr>

<tr>
<td><input type="button" value="选择" id="ss" onclick="viewData('001','深圳华为');"></td>
<td>001</td>
<td>深圳华为</td>
</tr>
<tr>
<td><input type="button" value="选择" onclick="viewData('002','用友软件');"> </td>
<td>002</td>
<td>用友软件</td>
</tr>
</table>
</body>
中间重复粘贴了。。

第1个回答  2016-10-05
经测试,代码没问题,选择的id和名称会返回父窗口。
要注意的是,需要在真实的web服务器环境中(IIS或Apache等)用window.open打开的子窗口其opener对象才有效,如果是在本地运行的则无效。追问

我用的TOMCAT不行啊。。练习用的 只在localhost下 大神能否加个Q详细指导下

本回答被网友采纳