当前位置:首页>>开发编程>>JavaScript>>新闻内容  
“父窗口”与“弹出子窗口”之间的刷新和传值
作者: 发布时间:2007-11-24 15:41:40 | 【字体:
  Web开发中适当运用一些弹出子窗口有很多好处,可以节省页面设计代价,获得好的用户体验,在最近项目开发中我遇到了几个父子窗口的问题,现在整理给大家,希望有所帮助.
               
  情景一: 打开某一子窗口, 子窗口中任一按钮点击时候不能弹出新页面,进行完操作后,关闭该子窗口,刷新父窗口.        
       
  1: 页面A:父窗口,其中有一个打开子窗口的链接,<a   href="#"onclick="open()">页面C</a>
  A中有如下js代码:
<script language="JavaScript">
   
function open()
    {
      window
.showModalDialog("页面B");
    }
</script>

  2: 页面B,此为中间页,起过渡作用
  B html 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>**</title>
</head>

<frameset rows="0,*">
    
<frame src="about:blank">
    
<frame src="页面C">
  
</frameset><noframes></noframes>
</html>

  3:页面C ,要打开的子窗口.
  它关闭时候刷新父窗口很简单,只要把A中
  <a   href="#"onclick="open()">页面C</a>   改为
  <a   href="页面A"onclick="open()">页面C</a>

  情景二:打开某一需要用到activex控件子窗口, 子窗口中任一按钮点击时候不能弹出新页面,进行完操作后,关闭该子窗口,刷新父窗口。
  此时候就不能用 window.showModalDialog()事件打开模式对话框了因为activex控件会报错,必须用window.open()

  1: 页面A:父窗口,其中有一个打开子窗口的链接,<a   href="#"onclick="open()">页面B</a>
  A中有如下js代码.

  2: 页面B,要打开的子窗口,关闭时候触发window.opener.location.reload();window.close();即可刷新父窗口并且关闭子窗口.
   
  情景三:打开某一子窗口,    让用户选择要添加的东东,譬如要添加到文章里的相片选择后关闭子窗口,然后选择的东东出现在父窗口里。
  在下图中,我点击"添加照片"链接然后弹出子窗口,在子窗口中选择后点击"添加照片"按钮,子窗口自动关闭,并且父窗口"已添加照片:"下面列出了我选择的照片。

        
      
            

  实现方法:类似情景一需要中间页面B , 只是子窗口C中点击"添加按钮"时触发的js事件中,除了获得选中的checkbox的值外,还要把获得的值回传给父窗口,传值回去的代码如下:

<script language="JavaScript">
function open()
{
    window
.open("页面B",'upload', 'height=400, width=420, top=0, left=0, toolbar=no, menubar=no,scrollbars=no, resizable=no,location=no, status=no');
}
</script>

window.parent.returnValue="选中的checkbox";
                window
.parent.close();

  而父窗口要捕获此值就要在情景一中所说的open()事件中添加获得返回值  

<script language="JavaScript">
  
function open()
    {
         
var str=window.showModalDialog("页面C");
         
if(str!=null)  
        {              
           picobj
.innerHTML+=str;
          
        }
     }
</script>

  注意这里的str是获取的返回值, 而picobj是你要显示被选择东东所放位置的div的id ,这里是<div id=picobj></div>


文章来源:
·一个支持IE和Firefox的日历选择器
·用JavaScript读取远程xml的数据
·用Javascript和CSS让DIV中的图片居中
·一个非常好的表单验证类:番茄表单验证类
·仿豆瓣分页原型(Javascript版)
·JavaScript获取Option的Value和Text值
·全角转半角的JavaScript函数
·仿基金查询输入框下拉筛选值效果(JavaScript)
·JavaScript中replace()函数用法小谈
 放生
 愚爱
 够爱
 触电
 白狐
 葬爱
 光荣
 画心
 火花
 稻香
 小酒窝
 下雨天
 右手边
 安静了
 魔杰座
 你不像她
 边做边爱
 擦肩而过
 我的答铃
 怀念过去
 等一分钟
 放手去爱
 冰河时代
 你的承诺
 自由飞翔
 原谅我一次
 吻的太逼真
 左眼皮跳跳
 做你的爱人
 一定要爱你
 飞向别人的床
 爱上别人的人
 感动天感动地
 心在跳情在烧
 玫瑰花的葬礼
 有没有人告诉你
 即使知道要见面
 爱上你是一个错
 最后一次的温柔
 爱上你是我的错
 怎么会狠心伤害我
 不是因为寂寞才想
 亲爱的那不是爱情
 难道爱一个人有错
 寂寞的时候说爱我