本人用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>又大神能够解释下么?还有,怎么在子窗体的按钮事件,直接关闭子窗体.

解决方案 »

  1.   

    很好解释,因为服务端事件是假象,进行通讯,刷新页面才是真。页面刷新导至后面的脚本失效(就算不失效也无法关闭,因为window对象会被重置)
    你可以用updatePanel解决该问题,但不推荐,丢弃服务端控件,重新学习html/css/js/web程序运行过程 才是正确做法
      

  2.   

    用updatepanel将按钮及要被刷新的内容包起来,具体你可以百度一下updatepanel的用法
      

  3.   

    现在我想在 后台的按钮事件中 关闭此 Dialog
      

  4.   


    现在不是刷新问题 是又弹出了一个新的页面.
    新页面和Dialog的内容一样.
      

  5.   

    解决了.
    在页面的Head中 加入属性
    <base target="_self">
      

  6.   

    你在document.getElementById("<%=btn_save.ClientID%>").click(); 中执行了什么操作?
    是不是刷新页面了,刷新了页面的话要在新页面执行window.close()操作