分析一下网页子窗口和网页父窗口的交互

父窗口|交互|网页|子窗口

1、父窗口传递信息给子窗口

看代码实例:

<script language=javascript>

function outPut()
...{
 //获取父窗口的文本信息赋值给text
 var text = document.abc.text.value;
 //打开子窗口,并且把操作句柄赋值给win变量,以下所有操作都是针对win对象的
 var win = window.open("","mywin", "menubar=no,width=400,height=100,resizeable=yes");
 //输出基本信息
 win.document.writeln("<title>输出结果</title>");
 win.document.writeln("你的信息是:<p>");
 //输出从父窗口获取的信息
 win.document.writeln(text);
 win.document.close();
 win.focus();
}
</script><form name=abc method=post>
<input type=text name=text size=50>
//调用上面的函数
<input type=button value=提交 onClick="outPut()">

</form>
2、子窗口传递参数给父窗口

我们对上面的代码进行改造:

<script language=javascript>
function outPut()
...{
 var text = document.abc.text.value;
 var win = window.open("","mywin", "menubar=no,width=400,height=100,resizeable=yes");
 win.document.writeln("<title>输出结果</title>");
 win.document.writeln("你的信息是:<p>");
 win.document.writeln(text);
 win.document.writeln("<input type=text name=child value=子窗口信息>");

 //对子窗口本身操作,使用self对象,对父窗口操作使用opener对象,这是关键
 //把子窗口中表单的值回传给父窗口,取代父窗口表单以前的值,然后关闭子窗口
 win.document.writeln("<input type=button value=关闭自己 >");
 //可以控制关闭父窗口
 win.document.writeln("<input type=button value=关闭父窗口 >");
 //刷新父窗口
 win.document.writeln("<input type=button value=刷新父窗口 >");

 win.document.close();
 win.focus();
}
</script><form name=abc method=post>
<input type=text name=text size=50>
<input type=button value=提交 onClick="outPut()">
</form>
3、不是同页面的子窗口和父窗口交互

假设我们涉及到外部程序,比如php、asp等等,那么我们处理的可能是两个页面,比如,上传功能,我们就是需要打开一个新页面,然后再把新页面中的值传递给父页面。
局部代码实例:

<input type="input" value="" name="input_tag" id = "input_tag" onKeyUp="clearPreTagStyle()" size="40">
<input type="hidden" value="0" name="tagid" id="tagid">
<input type="button" value="标签" onclick="popUpWindow('tag.php?tag='+escape(document.tryst_form.input_tag.value))">
以上是父窗口的部分代码,里面的popUpWindow是封装好的window.open函数,所以理解面面的tag.php是另外一个页面就可以,我们需要把当前表单中的值提交给tag.php页面去处理。
tag.php部分代码:

查询标签结果:

<a href="#" name="tag_1">生活</a><a href="#" onclick="opener.document.tryst_form.input_tag.value = document.tag_1.innerHTML">加入该标签</a>

<a href="#" name="tag_2">生活秀</a><a href="#" onclick="opener.document.tryst_form.input_tag.value = document.tag_2.innerHTML">加入该标签</a>这个就是我们的子窗口,我们要把tag_1和tag_2返回到子窗口中,虽然他们不是同一个页面。这里有个知识点,就是我们如何获取连接中的值,我们使用innerHTML属性:document.tag_2.innerHTML 这个就是我们获取了tag_2的值“生活秀”,我们也能使用其他方法获取,比如:document.all.tag_2.innerHTML,或者this.innerHTML就是指本身的链接的值。

访问父窗口也是使用opener对象来处理:opener.document.tryst_form.input_tag.value,就能够改变父窗口的值。

时间: 2024-08-30 03:26:36

分析一下网页子窗口和网页父窗口的交互的相关文章

showModalDialog网页对话框关闭时刷新父窗口时,弹出这样的提示框&amp;amp;quot;请重新发送消息,无法刷新网页&amp;amp;quot;

问题描述 showModalDialog网页对话框关闭时刷新父窗口时,弹出这样的提示框"请重新发送消息,无法刷新网页"在网上找了N种办法,就是没用,真伤脑筋.请教哪位大侠指教,项目好赶,如果问题解决马上给分. 解决方案 解决方案二:你是怎么刷的父页?是在父页用location.reload()刷吗?如果是这样的话,注意看一下子窗口的<head><Basetarget="_self"/>解决方案三:我里面已经写了<Basetarget=&

ie 8-js子窗口关闭刷新父窗口

问题描述 js子窗口关闭刷新父窗口 使用window.showModalDialog("uploadFile.jsp",null,"dialogWidth=400px;dialogHeight=250px"); 方式弹出的一个子窗口, 我需要用子窗口控制刷新父窗口然后关闭子窗口, window.parent.dialogArguments.document.execCommand('Refresh'); window.close(); ie8下执行不成功 解决方案

jtable-JAVA JTable 中触发JComboBox导致子窗口会到父窗口后面

问题描述 JAVA JTable 中触发JComboBox导致子窗口会到父窗口后面 各位大神: 本人在JTable中添加了JComboBox控件,通过一个按钮去触发子界面,如果在JTable中触发了JComboBox控件就会导致需要弹出的子窗口不能在最前面一直在父窗口的后面.如果没有去触发JComboBox控件,则弹出的子窗口会在最前面. 代码如下: JComboBox控件在JTable中添加方式: JComboBox isJTCombox = new JComboBox() isJTCombo

不关闭子窗口不能操作父窗口该怎么做

问题描述 在父窗口中有个按钮 调用js方法弹出一个窗口想要实现:不关闭子窗口 不能操作父窗口该怎么做请各位指教 问题补充:7454103 写道 解决方案 这个也一样啊! 你平时 父子窗口 咋传值这个也可以的! 如果 父子窗口 传值不是很熟悉 可以百度下 一堆资料!解决方案二:模态窗口 本身就是这样!/*打开一个模态窗口*/function openModalWindow(url, actionName, width, height) {window.showModalDialog(url, ac

WPF Frame做导航的时候 在子页面怎么获取父窗口的控件

问题描述 RTWPFFrame做导航的时候在子页面怎么获取父窗口的控件?比如<FrameDockPanel.Dock="Top"x:Name="MainFrame"NavigationUIVisibility="Hidden"Source="Welcome.xaml"/> 在Welcome.xaml页面里面怎么获取父窗口的控件并且定义事件? 解决方案 解决方案二:自己顶!!!!!解决方案三:没人来?自己顶!解决方案

lhgdialog插件问题,弹出子窗口,并且点击子窗口的按钮时,关闭子窗口并且刷新父窗口!

问题描述 父窗口代码:<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="Parent.aspx.cs"Inherits="WebApplication1.Test.关闭子窗口并且刷新父窗口.Parent"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""h

c++-小弟请教在MFC中子窗口如何获取父窗口的句柄啊

问题描述 小弟请教在MFC中子窗口如何获取父窗口的句柄啊 比如我有个父类的Dialog类为A,还有一个子类的Dialog类为B,然后在A类的头文件中包含了B的头文件,然后在A类中生命一个B类的成员变量,类似下面那样,然后我通过一个button调用DoModal();B类的STYLE改为CHILD了: 然后我希望在子窗口中处理一些数据,然后传给父窗口:比如A中有个IDC_text1 有个IDD_BUTTON1,B中有个IDC_text2,有个IDD_BUTTON2: 我就希望在B中的IDC_tex

在父窗口上弹出子窗口,子窗口关闭刷新父窗口

问题描述 一.父窗口上:<ahref="#"onclick="OpenWin(this)"srclink="<%#"Employee_Update.aspx?E_id="+Eval("E_id")%>">修改</a>对应的JS:<script>functionOpenWin(obj){varlink=obj.srclink;varheight=parseInt

子窗口关闭后父窗口数据更新问题

问题描述 今天写了个简单的通讯录小应用程序,新增和编辑按钮会弹出一个窗口供添加联系人或编辑用的,但是在提交后,之前那个主窗口数据没有更新过来,需要点击查询等按钮执行一次更新才可以.这个BUG怎么修正,用手机敲的,希望得到解答,谢谢!下面是局部代码:Main.javamodify(eve){OperationDialog od = new OperationDialog(this);od.setModal(true);od.initData(aid);od.setVisible(true);ini

如何使子控件和父窗口都能接受到CBN_SELCHANGE事件?

情况是这样的:在对话框中有一个自定义组合框控件CMyComboBox,它继承自MFC类CComboBox.在自定义的组合框中,要处理这样一种情况,如果用户没有改变CMyComboBox的值,则不给父窗口发消息,如果改变了,则通知父窗口以进行其它的更新工作.解决方案如下:  //CMyComboBox.hclass CMyComboBox : public CComboBox{        afx_msg BOOL OnSelchange();    } //CMyComboBox.cppBEG