B
-----
<form target="_parent" onsubmit="window.close()"
-----
<form target="_parent" onsubmit="window.close()"
解决方案 »
- jquery $(li)用attr更换视频src 求助在线等,!!
- js新人
- JS滚动特效让IE死了。
- 两个模态窗口传值 报错"错误尚未实现"!为什么?不用两个模态窗口就好的
- js正则问题
- dtree的url参数传值会把"0009"这样的参数传成"9",怎么办?
- vbscript数组变量传递到javascript问题给100分
- 请问这里%是什么意思
- 刷新页面的问题,急死我了!(一定付点!)
- easyui tree加载json文件格式的树,树不显示
- 如何在网页中用按钮实现IE标准按钮的"搜索",“收藏”,“历史”的功能,就是在左边出现一个窗口带关闭按钮的,而不是弹出式的
- 修改注册表里IE的 window title,谁能给我一份嵌入ASP的代码啊?
javascript:window.form1.submit();window.close()
to ZeusLion(亮) :延时不是办法,时间不好确定。
to JK_10000(JK1) :改成GET有什么道理呢?
我先把 window.close()放到onsubmit中试试。
window.open('filename.XXX','', 'height=300,width=300');file B:submit先提交给自己,在文件最后检测提交标志
if( **** == "1")
{
window.close();
opener.focus();
opener.location.reload(); //refresh the opener window
}
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>
------------------------------------------
如果用get方式提出请求,它的数据通过url重组送到服务器,即:一旦请求,数据就传出,不会丢失。
如果用post方式提出请求,它的数据是服务器端程序通过http协议到客户端取,如果在把数据取出来之前窗口的窗口已完成关闭,将找不到数据源,造成“提交失败”的现象----请注意:post方式并不“提交”数据。
这样分析,可以认为get方式不会提交失败。
说明:
1.以上内容部分是JK自己的理解,如有错误,见谅
2.JK没有测试,如果楼主测试失败,见谅
<script language='javascript'>
window.close();
</script>
就可以
</body></html><script language='javascript'>
if (是否提交){
window.close();
}
</script>
在b页的onunload时
window.returnValue
返回到A页
在提交到A页
这个思路在实际使用中比较合理。并猜想服务器对表单提交的回应是发送到主窗口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脚本来执行提交也行,如此便不用设定时了。-----------------------------------------------------------------以上两种方法应该都能成功解决你的问题。
例如:
{
循环1000次
document.write("AAAAAA");
循环10000次
document.write("BBBBBB");
}
你以为会先看到AAAAAA,等一会再看到BBBBBB么? 不会的,你一定会同时看到这两个玩意。