日期:2014-05-16  浏览次数:20338 次

关于JS关闭窗口问题。

本人用iframe搭建了一个页面Main.aspx

现在右边部分点击按钮 弹出一个showModalDialog()


现在我将这个子窗体 直接关闭 是没有问题的
也就是 window.close() 窗体可以正常关闭.

可是在此之前 我用js 调用了一个服务器空间按钮事件就会有问题.代码如下


<script language="javascript" type="text/javascript">
document.getElementById("<%=btn_save.ClientID%>").click();
window.close();
window.returnValue="aaa";
</script>


此时,当前页面会打开一个与子窗体一样的页面出来,然后关闭子窗体.
等于又打开了一次子窗体的页面.(此时可以操作父窗体,也就是Main.aspx)

如果注释掉按钮事件 就没有问题。

<script language="javascript" type="text/javascript">
//document.getElementById("<%=btn_save.ClientID%>").click();
window.close();
window.returnValue="aaa";
</script>


又大神能够解释下么?

还有,怎么在子窗体的按钮事件,直接关闭子窗体.

------解决方案--------------------
很好解释,因为服务端事件是假象,进行通讯,刷新页面才是真。页面刷新导至后面的脚本失效(就算不失效也无法关闭,因为window对象会被重置)
你可以用updatePanel解决该问题,但不推荐,丢弃服务端控件,重新学习html/css/js/web程序运行过程 才是正确做法
------解决方案--------------------
你在document.getElementById("<%=btn_save.ClientID%>").click(); 中执行了什么操作?
是不是刷新页面了,刷新了页面的话要在新页面执行window.close()操作