window.open()方法的问题,关于主窗口与子窗口怎样通讯,大家一定帮我看看 <input type=submit value=确定 name=submit style='background-color:#ffffff;' onclick=Javascript:window.close();>肯定错了.冲突了.你在iframe中做一个结果的判断, 如果有结果就关闭子窗口,试试. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 onclick="javascript:document.queryform.submit();window.close();" to duhastfaust() : 如何判断呢?我不会写。 to bingofei(bingo): 这么写表单可以提交,但window.close();这条语句不起作用,好奇怪! 你这样当然错了。。你等于是截获了提交事件 ,然后把提交改成直接关闭了 。 。 。你可以在提交以后,再关闭就可以了。。先document.all.queryform .submit(); window.opener = null ; window.close();也就是: onclick = "javascript:document.all.queryform.submit();window.opener=null;window.close();" onclick = "javascript:document.queryform.submit();self.close();" 我的错 , 先submit再close好像是不行的 , 因为在submit的时候,就已经跳转到了另一个页面 。 。 。另一种方法:在主窗口中直接关闭子窗口 。原理是通过一个变量存放打开的子窗口,当主窗口探测到更新时,调用函数关闭打开的子窗口 。代码如下:<script language = javascript>var ChildWnd;//定义一个变量存放打开的子窗口function OpenChildWnd(){ //打开子窗口 ChildWnd = window.open('controlservlet?action=showcondition&objName=people',null,'top=250,left=300,width=400,height=250,toolbar=0,location=0,directories=0,menubar=0,scrollbars=1,resizable=1,status=0');}function CloseChildWnd()//当需要时,调用此函数关闭子窗口 。{ ChildWnd.close();}</script><input type="button" value="人要素查询" name="people" style="background-color:#D1D5BA;" onclick="OpenChildWnd()"> to duhastfaust() : 如何判断呢?我不会写。比如,你的iframe中有一个table,一开始cell里应该没有内容,查询结束后根据查询结果进行判断么. 对啊,先提交再关闭窗口啊,把按钮定义成button类型的,不要定义成submit类型 子窗口提交到controlservlet页面,所以在controlservlet中做完处理,并在父窗口的IFRAME中显示了处理后结果后,再调用window.close();这样子窗口就可以关闭了! to ricky460(阿酷): 还有别的好办法么?我就是想把查询条件提上去,然后再把子窗口关掉。 我不是说你的方法不好用,但你不太了解我这里的情况,那个子窗口是JAVA的一个Servlet,它根据不同的条件,即: controlservlet?action=showcondition&objName=people <!-- 人要素查询 --> controlservlet?action=showcondition&objName=area <!-- 地要素查询 --> controlservlet?action=showcondition&objName=good <!-- 物要素查询 --> . . . 等等一些参数生成不同的查询条件输入页面子窗口。但实际上这些子窗口都是同一个Servlet,即他们是同一个子窗口。 如果用你的办法,整个前台显示层流程就要修改了,这不行的。 我javascript方面实在水平有限,还请各位帮我再想想。 哎,急死我了! to rabbit99(小兔子乖乖) 还有 duhastfaust() : 你们是说要侦测<iframe >的变化是么?在什么事件里写"子窗口.close();"方法啊? <form method=POST action=controlservlet?action=interquery name=queryform onsubmit=return(ch(this))> <!-- 填充姓名 --> <input type=text name=XM size=26 style='background-color:#6699cc;' onblur='Check_String(this)'> <!-- 填充身份证号 --> <input type=text name=SFZH size=26 style='background-color:#6699cc;' onblur='Check_String(this)'> <!-- 提交按钮 --> <input type="submit" name="Submit" value="提交" onClick="document.form1.submit();self.opener='lhc';self.close();"> <!-- 重写按钮 --> <input type=reset value=重写 name=reset style='background-color:#ffffff;'> </form> to gdjxlhc(超仔): 你试过了么?这段代码在你那里好使么? 1\把<input type=submit value=确定 name=submit style='background-color:#ffffff;' onclick=Javascript:window.close();>这个改成<input type=button value=确定 name=submit style='background-color:#ffffff;' onclick="Javascript:submitandclose()";>2、定义submitandclose()function submitandclose(){ var xm = document.queryform.xm.value ; window.framename.document.location.href = "controlservlet?action=interquery&xm=" + xm ; window.close();}3、这样应该能实现你所需要的功能了,思路是用在按钮的onclick事件中处理提交,把需要提交的各个变量用js处理,连接到需要提交的地址。 to gdjxlhc(超仔): 可是在我这里不好使啊 to bingofei(bingo): 谢谢你帮我,但这样的方法需要修改前台显示层设计,设计思路现在是不能改的,不然没有办法合啊,还有别的办法么? 大家再帮我看看啊 怎么会要修改前台显示层设计?我不理解。第一,我给你的代码里面没有涉及到界面设计吧?只是多定义一个函数而已。如果你不愿意使用函数的话,直接写到按钮的onclick事件中也行。第二,本身用js操作应该就属于前台的范畴,你所谓的修改前台显示层设计,我不理解。 to bingofei(bingo) : 比如"controlservlet?action=interquery&xm=" + xm ; 姓名信息是不允许在这里传递的,如果传递了,就要修改ControlServlet.java而这个JAVA类是整个前台业务流的枢纽,它可不单单是负责读取查询条件,返回查询结果,再说我写的那些HTML只是个例子,实际上,就连这些查询条件都是活的,有时候这个条件是“姓名”,可有的时候却是“数据元事件”,ControlServlet.java把这些组织查询条件的工作交给了ShowCondition.java来处理,而ShowCondition.java又调用了C++的Corba服务器,流程是很复杂的,所以不能改啊。 楼主的意思我还不是很清楚其实你也并不需要调用onclick=Javascript:window.close();试着将下面的代码加入你的网页中适当位置,修改成你想要的效果吧<script language="JavaScript">{id=document.input.id.valueaa='您确定要查询 [ID='+id+' ] 吗?' //id设为查询条件if (confirm(aa))window.location="killdel.asp?id="+id;elsewindow.location="admin.asp";}</script> 请问用document.write构造一个新页面,谢谢 js 中的 gt 和 lt 是什么单词的缩写? 请教!如何取JS文件中的变量值。 怎么做一个类似便签的效果 推荐一下自己的网站,散散分 一个很菜的问题,希望大家帮忙! html=html+生成。 IE11如何调试模态窗口中的js脚本 急!关于传参的问题 制作仿人人网评论框demo的问题!!! 怎样用setInterval编一个pause(time)函数 如何用javascript 清空剪贴版???
to duhastfaust() :
如何判断呢?我不会写。 to bingofei(bingo): 这么写表单可以提交,但window.close();这条语句不起作用,好奇怪!
你可以在提交以后,再关闭就可以了。。
先document.all.queryform .submit();
window.opener = null ;
window.close();也就是: onclick = "javascript:document.all.queryform.submit();window.opener=null;window.close();"
原理是通过一个变量存放打开的子窗口,当主窗口探测到更新时,调用函数关闭打开的子窗口 。
代码如下:
<script language = javascript>
var ChildWnd;//定义一个变量存放打开的子窗口
function OpenChildWnd()
{
//打开子窗口
ChildWnd = window.open('controlservlet?action=showcondition&objName=people',null,'top=250,left=300,width=400,height=250,toolbar=0,location=0,directories=0,menubar=0,scrollbars=1,resizable=1,status=0');
}
function CloseChildWnd()//当需要时,调用此函数关闭子窗口 。
{
ChildWnd.close();
}
</script><input type="button" value="人要素查询" name="people" style="background-color:#D1D5BA;" onclick="OpenChildWnd()">
如何判断呢?我不会写。
比如,你的iframe中有一个table,一开始cell里应该没有内容,查询结束后根据查询结果进行判断么.
controlservlet?action=showcondition&objName=area <!-- 地要素查询 -->
controlservlet?action=showcondition&objName=good <!-- 物要素查询 -->
.
.
.
等等一些参数生成不同的查询条件输入页面子窗口。但实际上这些子窗口都是同一个Servlet,即他们是同一个子窗口。 如果用你的办法,整个前台显示层流程就要修改了,这不行的。 我javascript方面实在水平有限,还请各位帮我再想想。 哎,急死我了!
to rabbit99(小兔子乖乖) 还有 duhastfaust() : 你们是说要侦测<iframe >的变化是么?在什么事件里写"子窗口.close();"方法啊?
<input type=text name=XM size=26 style='background-color:#6699cc;' onblur='Check_String(this)'> <!-- 填充身份证号 -->
<input type=text name=SFZH size=26 style='background-color:#6699cc;' onblur='Check_String(this)'> <!-- 提交按钮 -->
<input type="submit" name="Submit" value="提交" onClick="document.form1.submit();self.opener='lhc';self.close();"> <!-- 重写按钮 -->
<input type=reset value=重写 name=reset style='background-color:#ffffff;'> </form>
1\把<input type=submit value=确定 name=submit style='background-color:#ffffff;' onclick=Javascript:window.close();>
这个改成<input type=button value=确定 name=submit style='background-color:#ffffff;' onclick="Javascript:submitandclose()";>2、定义submitandclose()
function submitandclose(){
var xm = document.queryform.xm.value ;
window.framename.document.location.href = "controlservlet?action=interquery&xm=" + xm ;
window.close();
}3、这样应该能实现你所需要的功能了,思路是用在按钮的onclick事件中处理提交,把需要提交的各个变量用js处理,连接到需要提交的地址。
to gdjxlhc(超仔):
可是在我这里不好使啊 to bingofei(bingo):
谢谢你帮我,但这样的方法需要修改前台显示层设计,设计思路现在是不能改的,不然没有办法合啊,还有别的办法么? 大家再帮我看看啊
第一,我给你的代码里面没有涉及到界面设计吧?只是多定义一个函数而已。如果你不愿意使用函数的话,直接写到按钮的onclick事件中也行。
第二,本身用js操作应该就属于前台的范畴,你所谓的修改前台显示层设计,我不理解。
to bingofei(bingo) : 比如"controlservlet?action=interquery&xm=" + xm ; 姓名信息是不允许在这里传递的,如果传递了,就要修改ControlServlet.java
而这个JAVA类是整个前台业务流的枢纽,它可不单单是负责读取查询条件,返回查询结果,再说我写的那些HTML只是个例子,实际上,就连这些查询条件都是活的,有时候这个条件是“姓名”,可有的时候却是“数据元事件”,ControlServlet.java把这些组织查询条件的工作交给了ShowCondition.java来处理,而ShowCondition.java又调用了C++的Corba服务器,流程是很复杂的,所以不能改啊。
其实你也并不需要调用onclick=Javascript:window.close();
试着将下面的代码加入你的网页中适当位置,修改成你想要的效果吧
<script language="JavaScript">
{
id=document.input.id.value
aa='您确定要查询 [ID='+id+' ] 吗?' //id设为查询条件
if (confirm(aa))
window.location="killdel.asp?id="+id;
else
window.location="admin.asp";
}
</script>