Dzwebs.Net

撰写电脑技术杂文十余年

window.open与window.showModalDialog传参的实例

Admin | 2013-4-22 9:25:46 | 被阅次数 | 8689

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  在制作web网页时,尤其是动态网页,通常需要从客户端Client将参数传递给服务器端Host进行数据的交流。而在传递参数的过程中,客户端有两种传递参数的两种方法,分别为:window.open与window.showModalDialog,下面,本文就针对这两种方法给出其区别与实例。

  一、window.open与window.showModalDialog区别

  前者在弹出窗口之后,针对网页可以进行任何的操作,比如滚动网页、点击链接等;而后者在弹出窗口之后,网页处于等待状态,不能做其它的事,只能是关闭了当前的窗口之后才能做其它的事。

  二、window.open与window.showModalDialog使用范本

  两者在使用的过程中,都会与父窗口进行数据交流,如下是使用的例子。

  先看window.showModalDialog的例子:

  倘若现在有一个父窗体parent.jsp,它里面有一个方法

  function openChild(){
  var temp = window.showModalDialog("child.jsp",window,'dialogWidth=400px;dialogHeight=200px');
  document.getElementByIdx_x("fromChildName").value = temp.childName;
  document.getElementByIdx_x("fromChildAge").value = temp.childAge;
  }

  这里面,第二个参数传递为window,也就是把当前页面做为参数传递到子窗口中,temp 为子窗口的返回值

  再来看子窗口child.jsp页面:

  function fromParent(){
  var parName = window.dialogArguments.document.getElementByIdx_x("parName").value; //得到父窗口中的姓名
  var parAge = window.dialogArguments.document.getElementByIdx_x("parAge").value
  document.getElementByIdx_x("fromParName").value = parName;
  document.getElementByIdx_x("fromParAge").value = parAge;
  }

  从上面我们就可以看出,在父窗口中我们传递了window这个参数,然后在子窗口中,我们用window.dialogArguments直接到取了父窗口中id = "parName"的属性值

  再来说这个返回值temp是怎么回事?

  function toParent(){
  var obj = new Object();
  obj.childName = document.getElementByIdx_x("childName").value;
  obj.childAge = document.getElementByIdx_x("childAge").value;
  window.returnValue = obj;
  window.close();
  }

  我们用window.returnValue的方式直接把一个对象返回到父窗口,然后父窗口根据对象中的属性直接取出其中的值就OK了。

  那么,我们可不可以直接调用父窗口中的方法呢?

  答案是肯定的:

  function fromParentFunction(){
  window.dialogArguments.parFunction();
  }

  我们用window.dialogArguments + 父窗口的方法名,就直接可以调用父窗口的方法

  再看window.open进行子父窗口间的传值:

  在父窗口parent.jsp页面中:

  function openChild(){
  var obj = window;
  obj.name = "大众时机";
  obj.age = "31";
  window.open('child.jsp','此处弹出子窗口','height=200,width=400,top=200,left=400,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no');
  }

  我们定义变量obj = window,再通过属性赋值把对象传递过去,接下来看下子窗口:

  function fromParent(){
  alert("得到父窗口的中姓名值:"+ this.opener.name);
  alert("得到父窗口中的年龄值:"+ this.opener.age);
  }

  利用this.opener.属性名 就可以得到父窗口中的变量值

  那么如何把值子窗口中的值再返回到父窗口中呢?

  function toParent(){
  //把子窗口中的值传递给父窗口,document.getElementByIdx_x("name").value得到子窗口的值
  this.opener.document.getElementByIdx_x("parName").value = document.getElementByIdx_x("childName").value;
  this.opener.document.getElementByIdx_x("parrAge").value = document.getElementByIdx_x("childAge").value;
  window.close();
  }

  这里的parName是父窗口中的id = 'parName' ,也就是说,可以在子窗口中利用 this.opener. + 父窗口元素赋值给父窗口。


该杂文来自: 网页制作杂文

上一篇:自定义的getElementByClassName代码获取className

下一篇:设定网页浏览器滚动条scroll的滚动位置

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计