`
nishizhua33
  • 浏览: 4905 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
最近访客 更多访客>>
社区版块
存档分类
最新评论

总结JavaScript(Iframe、window.open、window.showModalDi

阅读更多

 做项目的时候,需要用到一个窗口中的子窗口iframe需要取到父窗口的值,弄了好久,都没找到解决方法,幸好看到了这篇博文给了我启发,现转载如下。

看到这篇文章中介绍的子窗口刷新父窗口用的方法是

parentWin.location.reload(); 

可是我的不行,我写了个parent.parent.location.reload(); 才行的。

子窗口调用父窗口的中的JS方法,我也不是按照下面这篇文章写的,不过他给了我很大的启发,我是这样写的:

parent.parent.queryPendList();

 

 

来源:http://www.webczw.com/article.asp?id=650

一、Iframe 

 

//&&&&&&&&&&&&&&&&&&&&公共方法开始&&&&&&&&&&&&&&&

//父对象得到子窗口的值

//ObjectID是窗口标识,ContentID是元素ID

function GetValue(ObjectID,ContentID)

{

       var IsIE = (navigator.appName == ‘Microsoft Internet Explorer‘)

                     if(IsIE)

                     {//如果是IE         

                            alert(document.frames(ObjectID).document.getElementById(ContentID).innerHTML);                              

                     }

                     else

                     {//如果是FF

                             alert(document.getElementById(ObjectID).contentDocument.getElementById(ContentID).innerHTML);

                                   //FF下不支持innerText; 下面是解决方法                     

                                   //if(document.all){

                                   //  alert(document.getElementById(‘div1‘).innerText);

                                   //} else{

                                   //  alert(document.getElementById(‘div1‘).textContent);

                                   //}

                     }    

}

 

//父对象向子窗口赋值

//ObjectID是窗口标识,ContentID是元素ID

function SetValue(ObjectID,ContentID)

{

var IsIE = (navigator.appName == ‘Microsoft Internet Explorer‘)

              if(IsIE)

              {//如果是IE         

                     document.frames(ObjectID).document.getElementById(ContentID).innerHTML="我是IE下通过父窗口赋值过来的";                            

              }

              else

              {//如果是FF

                      document.getElementById(ObjectID).contentDocument.getElementById(ContentID).innerHTML="我是FF下通过父窗口赋值过来的";                  

              }    

}

//&&&&&&&&&&&&&&&&&&&&公共方法结束&&&&&&&&&&&&&&&

 

 

      1.父窗口对子窗口操作

 

刷新:

      document.getElementById("IframeID").src=document.getElementById("IframeID").src+"?_="+Math.random();

上面这种方法有时需要对“src”属性处理一下。

 

取值:

//父窗口取子窗口的值

       GetValue("Iframe1","IframeDiv");

 

赋值:

//父窗口设置窗口元素的值;

       SetValue("Iframe1","IframeDiv");      

 

   2.子窗口操作父窗口

 

              刷新:

           (1)window.parent.location.href=window.parent.location.href;  

           (2)window.parent.location.reload();

              (3)、大家可以补充

 

    取值:

alert(window.parent.document.getElementById("IframeDiv").innerHTML);    

 

赋值:

window.parent.document.getElementById("IframeDiv").innerHTML="我是从子窗口IFRAME传过来的值";

 

关闭:

window.parent.opener=null;//如果不加这句,会提示关闭询问窗口;

window.parent.close();

二、window.open 

1.父窗口对子窗口操作

打开:

var win=null;

win=window.open("Open.html","win","width=200,height=200");

 

最大化:

//窗口最大化

function SonMaximize()

{

       if(win&&win.open&&!win.closed)

       {

              win.moveTo(-4,-4);

              win.resizeTo(screen.availWidth+8,screen.availHeight+8);

       }else{

              alert(‘还没有打开窗口或已经关闭‘);

       }

}

 

最小化:

//窗口最小化

function SonMinimize()

{

       if(win&&win.open&&!win.closed)

       {

              win.resizeTo(0,0);

              win.moveTo(0,window.screen.width);

       }else{

       alert(‘还没有打开窗口或已经关闭‘);

       }    

}

 

 

 

关闭:

//关闭窗口

function CloseSon()

{

       if(win&&win.open&&!win.closed)

       {

              win.opener=null;

              win.close()

       }else{

              alert(‘还没有打开窗口或已关闭‘) ;

       }

}

 

刷新:

//刷新

function RefreshSon()

{

       if(win&&win.open&&!win.closed)

       {

              win.location.reload();

              win.focus();

       }else{

              alert(‘窗口还没有打开或已关闭‘);

       }

}

 

查看窗口大小:

function ViewSonSize()

{

       if(win&&win.open&&!win.closed)

       {

              alert(win.document.body.clientWidth+‘*‘+win.document.body.clientHeight);

              win.focus();

       }else

       {

              alert(‘ 还没有打开窗口或者已关闭‘);

       }    

}

 

取值:

alert(window.document.getElementById("OpenDiv").innerHTML);

 

赋值:

win.document.getElementById("OpenDiv").innerHTML="我是从父窗口中传过来的值";

 

2.子窗口操作窗口

 

刷新:

window.opener.location.reload();

       //下面这种方法也可以

       //window.parent.location.href=window.parent.location.href;

 

 

 

 

 

关闭本窗口:

//关闭本窗口

function CloseWindow()

{     //window.opener.opener=null;

       window.close();

}

 

关闭父窗口:

//关闭父窗口

function CloseParent()

{     //火狐下不起作用,如果要想起作用。用下面的方法

    //firefox,在地址栏输入about:config      

       //找到dom.allow_scripts_to_close_windows这项并改为true

              var IsIE = (navigator.appName == ‘Microsoft Internet Explorer‘)

              if(IsIE){//如果是IE            

                     window.opener.opener=null;

                     window.opener.close();

                     window.close();     

              }else{

                     alert("火狐不能直接关闭;需要以下设置1.firefox,在地址栏输入about:config;2.找到dom.allow_scripts_to_close_windows这项并改为true");

              }

 

}

 

取值:

alert(window.opener.document.getElementById("OpenDiv").innerHTML);     

 

赋值:

window.opener.document.getElementById("OpenDiv").innerHTML="我是从子窗口Open传过来的值";           

 

三、模态窗口篇

1.父窗口操作子窗口

父窗口JS代码:

var parValue="现在显示了父窗口中的变量值";

var hao="郝建卫";

function ShowDailog(PageHref,Title,Height,Width)

{

       //--------------left位置

       //screen.availHeight声明了显示浏览器的屏幕的可用宽度

       var dleft =(screen.availHeight-Height)/2;

       //--------------top位置

       var dtop =(screen.availWidth-Width)/2;

       //---------------

 

Var sRet = window.showModalDialog(PageHref,window,Title,"scrollbars=yes;resizable=no;help=no;status=no;center=yes;dialogTop=25;dialogLeft="+ dleft +";dialogTop="+ dtop +";dialogHeight="+Height+"px;dialogWidth="+Width+"px;");

       //--------return

       if (sRet =="refresh")//这种是利用返回值来刷新父页面

       {

              window.Test="true";

              window.location.reload();            

              alert(window.Test);

       }

}

function test()

{

       alert("模态窗口成功调用父窗口的方法");

}

2.模态窗口操作父窗口

var parentWin=window.dialogArguments; 

 

刷新:

       parentWin.location.reload(); 

 

取值:

alert(parentWin.document.getElementById("ShowModalDialogDiv").innerHTML)   //获取父窗口中的对象

 alert("我是从父窗口中得到的变量>>>"+parentWin.parValue);       //获取父窗口中的变量

 

调用父窗口JS方法:

parentWin.test();    //调用父窗口中的方法

 

赋值:

parentWin.document.getElementById("ShowModalDialogDiv").innerHTML="我是从子窗口ShowModalDialog传过来的值";      

 

关闭本窗口:

//关闭本窗口

function CloseWindow()

{

       window.parent.close();

}

 

关闭父窗口:

//关闭父窗口

function CloseModal()

{    

       var IsIE = (navigator.appName == ‘Microsoft Internet Explorer‘)

              if(IsIE){//如果是IE            

                     window.parent.parent.close();

                     //parentWin.opener=null;如果把上面的换成这行,不能关闭父窗口,

                     parentWin.close();

                     //window.parent.parent.parent.parent.close();这个只能关闭模态窗口本身目前只在IE6下测试

              }else{

                     alert("火狐不能直接关闭;需要以下设置1.firefox,在地址栏输入about:config;2.找到dom.allow_scripts_to_close_windows这项并改为true");

              }    

}

分享到:
评论

相关推荐

    window.open父子窗口传值问题

    在Web开发中,`window.open` 是一个JavaScript函数,它用于打开新的浏览器窗口或标签页。这个函数在处理用户交互,比如点击按钮打开新页面,或者在不同窗口间传递数据时非常常见。当我们谈论“window.open父子窗口...

    js window.open iframe dialog

    在JavaScript的世界里,`window.open`、`iframe`和`dialog`是三个非常重要的概念,它们在网页交互和页面通信中扮演着关键角色。这里我们将深入探讨这些知识点,并结合实例来帮助你理解它们的用法。 1. `window.open...

    chrome-extension---Access-Local-Files:Chrome扩展程序可打开本地文件并执行跨域访问的iframe中的window.open

    从iframe打开window.open Chrome会阻止从跨域框架中单击的所有window.open。 该扩展名允许您打开窗口。 单击链接到本地​​文件。 文件打开。Chrome商店原始扩展名 原始的chrome扩展名仅允许打开本地链接。 我已经...

    window.showModalDialog方法的使用

    在JavaScript编程中,`window.showModalDialog`是一个用于打开模态对话框的函数,它能够创建一个新的浏览器窗口或者在当前窗口内显示一个弹出层,阻止用户与父窗口的交互,直到用户关闭对话框为止。这个方法在创建...

    IFrame AND window对象

    1. **导航控制**:`window.location`用于获取或设置当前页面的位置,`window.open()`可以打开新窗口。 2. **页面操作**:`window.onload`和`window.DOMContentLoaded`事件分别在页面完全加载和DOM结构加载完成后触发...

    layer.open的自适应及居中及子页面标题的修改方法

    `parent.layer.getFrameIndex(window.name)` 用于获取当前iframe层的索引,`parent.layer.iframeAuto(index)` 则根据索引值使弹窗内容自动调整大小以适应内容。 接下来,我们讨论如何让layer.open的弹窗居中显示。...

    再iframe中刷新列表

    如果弹出层是通过`window.open`方式打开的,那么可以利用`window.opener`对象来访问父页面的数据。 **步骤详解:** 1. **打开弹出层**: - 在子页面B中打开弹出层C时,直接使用`window.open`方法即可。 ```...

    js模式化窗口问题![window.dialogArguments]

    总结,使用JavaScript的模式化窗口时,我们需要关注浏览器兼容性问题,特别是`window.dialogArguments`对象在Firefox中的特殊行为。通过适当的包装和浏览器检测,可以有效地解决这些兼容性问题,从而实现跨浏览器的...

    easyUi弹出window窗口传值与调用父页面的方法,子页面给父页面赋值

    在子页面中,可以通过`window.location.search`获取查询字符串并解析。 然后,是“调用父页面的方法”。EasyUI提供了一种方式,通过`parent`关键字来访问父窗口的对象,从而调用其上的函数。假设在父页面上有一个名...

    layer弹窗:top.layer弹窗到父页面跨域解决办法

    `window.postMessage()`方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文档的消息传递,即跨域通信。它的工作原理是:一个窗口向其打开的子窗口、其父窗口或者任何其他与之有某种关系的窗口发送...

    layer.open 按钮的点击事件关闭方法

    总结,本文所分享的layer.open按钮点击事件的关闭方法,涵盖了layer.open的基本用法、事件处理、关闭layer的方法、参数传递及层的管理等关键知识点。对于希望快速实现Web界面弹出层功能的开发者来说,是一篇具有实用...

    利用HTML5的window.postMessage实现跨域通信

    1. **跨窗口通信**:当一个页面打开另一个页面(如新窗口、`window.open`或`window.navigate`),它们可以通过`postMessage`通信。 2. **跨`iframe`通信**:父页面与`iframe`或多个`iframe`之间的通信,特别是当`...

    JavaScript使用HTML5的window.postMessage实现跨域通信例子

    这里,`otherWindow`指的是要通信的目标窗口,可以是通过window.frames属性访问的iframe窗口,或者是通过window.open()方法打开的新窗口。`message`参数是要发送的数据,它可以是字符串或对象(但IE8和IE9只支持字符...

    Javascript常用对象.txt

    - `window.name`:设置或获取窗口的名字,常用于`window.open()`方法中的参数。 - **方法** - `window.alert(message)`:显示一个带有指定消息的警告对话框。 - `window.confirm(message)`:显示一个确认对话框...

    window.parent与window.openner区别介绍

    在JavaScript中,`window.parent` 和 `window.opener` 是两个不同的对象,它们分别用于处理不同类型的窗口间通信。理解这两个对象的区别对于开发涉及多窗口交互的Web应用至关重要。 首先,`window.parent` 主要应用...

    javascript 页面刷新和模态对话框 学习总结 推荐哦

    通过`window.open()`函数打开的子窗口刷新父页面 - **语法**: `window.opener.location.reload();` - **应用场景**: 当用户在一个新窗口操作后需要返回主窗口时,可以通过这种方式刷新主窗口。 ##### 3. 刷新某一...

    Javascript框架,弹出新的窗口,警告框

    Javascript,iframe的使用,框架,弹出新的窗口,警告框 window.open Javascript,iframe的使用,框架,弹出新的窗口,警告框 window.open Javascript,iframe的使用,框架,弹出新的窗口,警告框 window.open ...

    javascript刷新父页面

    在网页开发中,有时我们需要从一个弹出的子窗口(通常是由 `window.open` 或 `window.showModalDialog` 方法打开的)来控制父窗口的行为,比如刷新父窗口的页面。这在很多应用场景下都非常有用,比如用户在子窗口...

    跳转代码

    根据给定的信息,“跳转代码”这一...而对于需要在后台执行某些操作后再跳转的情况,可以考虑使用隐藏的`<iframe>`标签或者JavaScript的`window.open()`方法。无论采用哪种方式,都需要确保代码的安全性和用户体验。

Global site tag (gtag.js) - Google Analytics