var__winRoot__=top||parent||window;//祖先窗口对象var__winParent__=__winRoot__;//父窗口对象(默认为祖先窗口)var__winTree__={subWinNames:''};//本窗口的子窗口对象集合。 subWinNames 记录所有子窗口的名称,方便遍历//--------------------------------------------------------window.closeSub=function()

{

__winTree_closeAllSubWins__();//关闭所有子窗口__winTree_closeWin__();//关闭当前窗口}

window.openSub=function(url, wname, property)

{

__winTree_openSubWin__(url, wname, property);

}

window.οnbefοreunlοad=function()

{varn=window.event.screenX-window.screenLeft;varb=n>document.documentElement.scrollWidth-20;if(b&&window.event.clientY<0||window.event.altKey)

{

window.closeSub();

}

}//--------------------------------------------------------

//一些函数//

--------------------------------------------------------//指定窗口是否存在//--------------------------------------------------------function__winTree_isExistWin__(hdl){try{varret=hdl&&!hdl.closed}catch(e){varret=false};returnret;}//--------------------------------------------------------

//窗口控制//

--------------------------------------------------------//构造窗口缺省名字//--------------------------------------------------------function__winTree_getDefaultWinName__()

{return"__wn"+(newDate().getTime())+"__";//用当前时间构造窗口缺省名字}//--------------------------------------------------------//打开子窗口,并添加到窗口目录树//--------------------------------------------------------function__winTree_openSubWin__(url, wname, property)

{varhdl=window.open(url, wname, property);

__winTree_addSubWin__(wname, hdl);//保存到子窗口对象集合}//--------------------------------------------------------//保存到子窗口对象集合//--------------------------------------------------------function__winTree_addSubWin__(subWinName, sWin)

{varwin=top?top : window;//获取本窗口的最上层窗口varwinTree=win.__winTree__;

winTree[subWinName]=sWin;//将子窗口对象加入到集合中winTree["subWinNames"]+=subWinName+",";//所有子窗口名称集合}//--------------------------------------------------------//将指定窗口的子孙窗口对象,添加到指定窗口的父窗口中//--------------------------------------------------------//使指定窗口的子孙窗口保持在目录树中的结构//否则指定窗口的子孙窗口将从目录树结构中断开,不能统一控制。//(用于关闭指定窗口的操作时)//--------------------------------------------------------function__winTree_addSubWins2pWin__(thisWin)

{

thisWin=thisWin||window;//缺省为本窗口varpWin=thisWin.__winParent__;varwinTree=thisWin.__winTree__;vararrSubWinNames=winTree.subWinNames.split(",");//子窗口名字数组varintSubWinNamesLen=arrSubWinNames.length;for(vari=0; i

{varsubWinName=arrSubWinNames[i];//指定窗口的子孙窗口名字if(!subWinName)continue;varsWin=winTree[subWinName];//指定窗口的子孙窗口对象//为避免和父窗口中已有的子窗口的名称相同,因此要加上缺省的、以当前时间来构造的名称pWin.__winTree_addSubWin__(subWinName+__winTree_getDefaultWinName__(), sWin);

}

}//--------------------------------------------------------//本窗口的所有下级子窗口执行指定动作//--------------------------------------------------------//funcName                    要执行的函数名称(例如 close ,即 window.close() ,或者其他自己定义的函数,例如 changeBgColor 等等)//argVals                    要执行的函数的参数值//--------------------------------------------------------function__winTree_doWithSubs__(win, funcName, argVals)

{if(!win||!funcName)return;varwinTree=win.__winTree__;vararrSubWinNames=winTree.subWinNames.split(",");//子窗口名字数组varintSubWinNamesLen=arrSubWinNames.length;for(vari=0; i

{varsubWinName=arrSubWinNames[i];//子窗口名字if(!subWinName)continue;varsWin=winTree[subWinName];//子窗口对象if(__winTree_isExistWin__(sWin))

{

sWin.__winTree_doWithSubs__(sWin, funcName, argVals);//查找该子窗口的下级子窗口sWin[funcName](argVals);//执行指定的动作}

}

}//--------------------------------------------------------//初始化窗口目录树//--------------------------------------------------------function__winTree_init__()

{if(__winTree_isExistWin__(opener))//如果存在父窗口{varpWin=opener.top;//父窗口。有可能是在 iframe 中打开本窗体,因此父窗体应该是 opener 的顶级窗体__winParent__=pWin;//祖先窗口__winRoot__=pWin;varppWin=pWin.opener;if(__winTree_isExistWin__(ppWin))//修正祖先窗口{

__winRoot__=pWin.__winRoot__;

}

}//alert([__winRoot__.document.title, __winParent__.document.title, window.document.title]); // for test only}//--------------------------------------------------------//关闭当前窗口//--------------------------------------------------------function__winTree_closeWin__(win)

{

win=win||window;//缺省为关闭当前窗口varpWin=win.__winParent__;if(__winTree_isExistWin__(pWin))//如果指定窗口有父窗口,且未关闭{

__winTree_addSubWins2pWin__(win);//将指定窗口的子孙窗口对象,添加到指定窗口的父窗口中}

win.opener=null;//此语句用于取消“是否关闭此窗口”的提示win.close();//关闭指定窗口pWin.focus();//聚焦到父窗口}//--------------------------------------------------------//关闭本窗口的所有下级子窗口//--------------------------------------------------------function__winTree_closeAllSubWins__(win)

{

win=win||window;//缺省为关闭当前窗口__winTree_doWithSubs__(win,"close");

}//--------------------------------------------------------//初始化//--------------------------------------------------------__winTree_init__();

java 父窗口关闭_javascrpt控制父窗口关闭,子窗口也关闭(转)相关推荐

  1. 在PYQT5中,点击主窗口中的按钮,弹出子窗口

    目录 例1: 例2: 例3: 例4: 需求: 在PYQT5中,点击主窗口中的按钮,弹出子窗口. 测试代码: 例1: from PyQt5.QtWidgets import * import syscl ...

  2. pyqt 界面关闭信号_PyQt从类(子窗口)发送信号返回到MainWindow(类)

    如何从我的类ScanQrCode()发回信号给calss MainDialog()?我使用Python 2.7和PyQt与QtDesigner4生成的窗口. 我确实设法将类ScanQrCode()中的 ...

  3. python画窗口_pyqt中图案如何画在子窗口上

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 基本思路是从QWidget派生出一个类重写paintEvent,在里面画图. UI部分代码是这样的 class Ui_Form(object): def ...

  4. Electron中打开和关闭子窗口以及子窗口向父窗口传值

    场景 用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/a ...

  5. javascript:子窗口和父窗口交互

    最近项目开发中需要子窗口和父窗口交互的内容,基本上无非就是把子窗口的信息传递给父窗口,并且关闭自己等等,或者是父窗口把自己的信息传递给子窗口等等. 1.父窗口传递信息给子窗口 看代码实例: <s ...

  6. [轉]子窗口和父窗口的函数或对象能否相互访问

    子窗口和父窗口的函数或对象能否相互访问 解决思路:        每一个窗口其实也是一个对象,窗口内的对象或函数就相当于对象内的对象或方法,问题的关键是如何取得窗口对象的控制句柄,不同的窗口的控件句柄 ...

  7. qt如何把父窗口的变量传给子窗口_父窗口和iframe子窗口之间相互传递参数和调用函数或方法...

    1.父窗口向子窗口传递参数: 可以在url中添加参数:2.html?a=1&b=2&c=3 然后在子页面上可用js解析,提供一个函数: function getQueryStr(sAr ...

  8. windows窗口分析,父窗口,子窗口,所有者窗口

    (本文尝试通过一些简单的实验,来分析Windows的窗口机制,并对微软的设计理由进行一定的猜测,需要读者具备C++.Windows编程及MFC经验,还得有一定动手能力.文中可能出现一些术语不统一的现象 ...

  9. FineUI小技巧(5)向子窗口传值,向父窗口传值

    前言 FineUI中经常会用到启用IFrame的Window控件,这样有助于从物理上进行代码解耦和.IFrame的引入就会涉及传值问题,如何在父窗口和子窗口之间相互传值呢? 向子窗口传值 向子窗口传值 ...

最新文章

  1. MySQL中MySQL X.X Command Line Client一闪而过的问题
  2. php7.2获取年份的格式,7.7.2 获取zval的值及类型
  3. nginx动静分离和负载均衡
  4. Salesforce 开发整理(十)项目部署总结
  5. 对《程序员的自我修养》(龙书)读后思考
  6. 能设值多个rowkey吗_顶楼送了露台,悄悄搭建阳光房,偏偏我家露台多个帽子,能拆吗?...
  7. MySQL 常见的开放性问题
  8. HttpRequest Get和Post调用其他页面的方法
  9. 相声登上直播平台 传统艺术能借风口浴火重生吗?
  10. 硬件的驱动和sdk的理解与应用
  11. php实现分时线图,分时图均价线公式?看懂了便可掌握股票的买卖点
  12. android开发环境搭建——android studio
  13. 题目 1040: 实数的打印
  14. win10U盘插进电脑读不出来/不显示驱动怎么办?
  15. Vision Assistant Minimum Scree Resolution
  16. JavaScript 身份证校验正则表达式
  17. 安卓手机格式化后怎么恢复
  18. rfm模型python_使用python实现RFM模型
  19. 计算机网络方向研究课题,计算机网络安全技术方向论文选题 计算机网络安全技术论文题目如何定...
  20. unity2D横版游戏教程-3 Cinemachine镜头移动

热门文章

  1. Steam VR虚拟现实手柄交互
  2. arm-linux-gcc安装
  3. 【疯狂世界杯】css 动画实现跳动的足球
  4. Babylongjs-默认查看器
  5. vs中使用ctrl+左键定位函数不准
  6. Win32汇编获取窗体的mousehover消息
  7. 设计模式之(十二)享元模式(Flyweight)
  8. vSphere 标准交换机
  9. 我把考研英语二真题做了词频
  10. 工业机器人实训耗材_工业机器人实训设备购置清单.doc