B
-----
<form target="_parent" onsubmit="window.close()"

解决方案 »

  1.   

    先把form1的method改为get再试试
    javascript:window.form1.submit();window.close()
      

  2.   

    to wsj(骆驼) :_parent是FRAME中用的吧?用PARENT无法找到A窗体。
    to ZeusLion(亮) :延时不是办法,时间不好确定。
    to JK_10000(JK1) :改成GET有什么道理呢?
    我先把 window.close()放到onsubmit中试试。
      

  3.   

    file A:
    window.open('filename.XXX','', 'height=300,width=300');file B:submit先提交给自己,在文件最后检测提交标志
    if( **** == "1")
      {
        window.close();
        opener.focus();
        opener.location.reload();  //refresh the opener window
      }
      

  4.   

    测试:
    index.htm:
    <a href=a.htm target="a">test_index</a>a.asp
    <a href=b.htm target="_blank">test</a>b.htm
    <html><head/><body>
    <form target="a" action="a.asp" method="post" onsubmit="window.close();">
    <input type="text" name=t value="111">
    <INPUT type="submit" value="Submit" id=submit1 name=submit1>
    </form>
    </body>
      

  5.   

    to JK_10000(JK1) :改成GET有什么道理呢?
    ------------------------------------------
    如果用get方式提出请求,它的数据通过url重组送到服务器,即:一旦请求,数据就传出,不会丢失。
    如果用post方式提出请求,它的数据是服务器端程序通过http协议到客户端取,如果在把数据取出来之前窗口的窗口已完成关闭,将找不到数据源,造成“提交失败”的现象----请注意:post方式并不“提交”数据。
    这样分析,可以认为get方式不会提交失败。
    说明:
    1.以上内容部分是JK自己的理解,如有错误,见谅
    2.JK没有测试,如果楼主测试失败,见谅
      

  6.   

    form1的action文件最后加一句
    <script language='javascript'>
    window.close();
    </script>
    就可以
      

  7.   

    ......
    </body></html><script language='javascript'>
    if (是否提交){
     window.close();
    }
    </script>
      

  8.   

    可以用
    在b页的onunload时
    window.returnValue
    返回到A页
    在提交到A页
      

  9.   

    我猜想,楼主把A窗作为主窗口,某个问题需要弹出个新窗口B(也许便于排版什么的)来操作,然后在该新窗口点击提交,同时关闭新窗口,回到主窗口。
    这个思路在实际使用中比较合理。并猜想服务器对表单提交的回应是发送到主窗口A。(不会没有回应吧?)  指出服务器回应窗口/框架的是FORM的target属性。B窗口中,得到A窗口的名字用sNameWindowA=window.opener.name---------------------------------------------------------
    偶认为,楼主代码出错的原因有可能是: JS编译器发出submit()指令后,立即执行window.close()指令;这样JS编译器的任务倒是完成了,但是WebBrowser控件(就是IE自身)尚未执行完submit指令带来的数据发送任务,就接到了关闭窗口指令;关闭窗口指令在WebBrowser中优先级高于数据发送任务(例如你大概可以在数据发送/下载过程中点击关闭窗口),这样数据发送尚未完成便被终止了,造成提交不成功。所以,
    1.如果在B窗中提交,必须在关闭指令被执行前确认数据提交成功。
    这里,单纯的setTimeout是没有用的,因为你不知道网络状况如何,无法给出一个确切的时间段。
    如果定时检查发送状态由B窗自行关闭,还不如在A窗口的回应中(或者OnUnload事件处理程序中,——究竟A窗是在什么时候开始unload,在数据发送开始时,还是接到首个服务器端回应页面数据时,这个你恐怕要自己试,才能决定是否能用onUnload事件)加上关闭B窗指令来得方便。
    但是你在A窗回应页面的body onload事件中关闭B是肯定不会出错的。(通过调整服务器端程序的执行顺序,你可以安全地将执行关闭B窗的指令提前。不过正如刚才所说的,你得试试)
    这里,你可以在B窗的submit()指令之后,加上window.opener.focus(),这样在提交一执行就立即将焦点还给A窗,不过B窗并未关闭,等待数据上载完成。2.在A窗中设一个visible='none'的DIV,在B窗口点击提交按键(之所以说是提交按键,这个按键不一定非要包含在FORM中,如果没有包含,全部由函数回应点击;如果包含,在onsubmit中回应false取消提交,再由函数处理)时, 将整个form1的outerHTML写到A窗的隐含DIV中,submit A窗的这个form(不要带有target属性或target=_self),关闭B窗。你可能需要setTimeout一点时间来确保form1在A窗的DIV中生效,不过我想100ms足够了。 或者,在插入的form1后面再插入一小段动态Script脚本来执行提交也行,如此便不用设定时了。-----------------------------------------------------------------以上两种方法应该都能成功解决你的问题。 
      

  10.   

    WebBrowser和JS编译器是不大同步的,大家可以用两个挺长时间的空循环,中间和后面加上往窗口里写上点东西来看看。
    例如:

    循环1000次
    document.write("AAAAAA");
    循环10000次
    document.write("BBBBBB");
    }
    你以为会先看到AAAAAA,等一会再看到BBBBBB么? 不会的,你一定会同时看到这两个玩意。