父页面

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>父窗口</title>
<script src="../Scripts/openModal.js"></script><!--引用遮罩层JS-->
<script language="javascript">
window.onfocus = getFocus;
window.onclick = getFocus;
function getFocus() {
if (typeof (window.childWindow) != "undefined") {//如果子窗口存在,将焦点转到子窗口
window.childWindow.focus();
}
}
function showChild() {
EV_modeAlert();//弹出遮罩层
window.childWindow = window.open("child.html", "child", "width=300px,height=110px,resizable=no,scroll=no,status=no");
window.childWindow.focus();//子窗口获取焦点
}
</script>
</head> <body>
<input name="btn_show" type="button" value="显示子窗口" onclick="showChild()" />
</body>
</html>

子页面

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<script src="../Scripts/openModal.js"></script><!--引用遮罩层JS-->
<title>子页面</title>
<script language="javascript">
window.onunload = function () { EV_closeAlert(); }//窗口关闭时去掉遮罩效果
</script>
</head>
<body>
</body>
</html>

JS

var EV_MsgBox_ID = "EV_bgModeHideDiv";
//重要
//弹出对话窗口(msgID-要显示的div的id)
function EV_modeAlert() {
//创建大大的背景框
var hideDiv = document.createElement("div");
hideDiv.id = EV_MsgBox_ID;
hideDiv.style.display = "none";
var bgObj = document.createElement("div");
bgObj.setAttribute('id', 'EV_bgModeAlertDiv');
document.body.appendChild(hideDiv);
document.body.appendChild(bgObj);
//背景框满窗口显示
EV_Show_bgDiv();
//把要显示的div居中显示
EV_Show_msgDiv();
}
//关闭对话窗口
function EV_closeAlert() {
var msgObj = window.opener.document.getElementById(EV_MsgBox_ID);
var bgObj = window.opener.document.getElementById("EV_bgModeAlertDiv");
msgObj.style.display = "none";
window.opener.document.body.removeChild(bgObj);
window.opener.document.body.removeChild(msgObj);
EV_MsgBox_ID = "";
} //把要显示的div居中显示
function EV_Show_msgDiv() {
var msgObj = document.getElementById(EV_MsgBox_ID);
msgObj.style.display = "block";
var msgWidth = msgObj.scrollWidth;
var msgHeight = msgObj.scrollHeight;
var bgTop = EV_myScrollTop();
var bgLeft = EV_myScrollLeft();
var bgWidth = EV_myClientWidth();
var bgHeight = EV_myClientHeight();
var msgTop = bgTop + Math.round((bgHeight - msgHeight) / 2);
var msgLeft = bgLeft + Math.round((bgWidth - msgWidth) / 2);
msgObj.style.position = "absolute";
msgObj.style.top = msgTop + "px";
msgObj.style.left = msgLeft + "px";
msgObj.style.zIndex = "10001"; }
//背景框满窗口显示
function EV_Show_bgDiv() {
var bgObj = document.getElementById("EV_bgModeAlertDiv");
var bgWidth = EV_myClientWidth();
var bgHeight = EV_myClientHeight();
var bgTop = EV_myScrollTop();
var bgLeft = EV_myScrollLeft();
bgObj.style.position = "absolute";
bgObj.style.top = bgTop + "px";
bgObj.style.left = bgLeft + "px";
bgObj.style.width = bgWidth + "px";
bgObj.style.height = bgHeight + "px";
bgObj.style.zIndex = "10000";
bgObj.style.background = "#777";
bgObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60,finishOpacity=60);";
bgObj.style.opacity = "0.6";
}
//网页被卷去的上高度
function EV_myScrollTop() {
var n = window.pageYOffset
|| document.documentElement.scrollTop
|| document.body.scrollTop || 0;
return n;
}
//网页被卷去的左宽度
function EV_myScrollLeft() {
var n = window.pageXOffset
|| document.documentElement.scrollLeft
|| document.body.scrollLeft || 0;
return n;
}
//网页可见区域宽
function EV_myClientWidth() {
var n = document.documentElement.clientWidth
|| document.body.clientWidth || 0;
return n;
}
//网页可见区域高
function EV_myClientHeight() {
var n = document.documentElement.clientHeight
|| document.body.clientHeight || 0;
return n;
}

window.open实现模式窗口(只弹出一个window.open)的更多相关文章

  1. ASP.NET查询页面设置form的action属性只弹出一个页面,并且每次将页面设置到最前

    原文:ASP.NET查询页面设置form的action属性只弹出一个页面,并且每次将页面设置到最前 背景 当数据量大.查询条件复杂,多样多的时候,我们可能需要单独做一个查询界面,当用户选择设置了相关的 ...

  2. selenium获取新页面标签页(只弹出一个新页面的切换)

    selenium获取新页面标签页(只弹出一个新页面的切换) windows = driver.current_window_handle #定位当前页面句柄 all_handles = driver. ...

  3. JS只弹出一个居中弹出窗口

    var newWindow;//定义一个窗口,有利于窗口间的通讯function makeNewWindow(url) {   if (!newWindow || newWindow.closed) ...

  4. 利用cookie实现“只弹出一次窗口”的JS代码

    弹出式窗口通常被用来做弹出广告(CPM),其实用弹出式窗口用来做消息通知也是最普遍而且是最有效的方法,但如果每次刷新页面特别是刷新首页都要弹出窗口的话,那绝对是让访问者厌烦的事情. 比如你将上面的脚本 ...

  5. window.open实现模式窗口

    看了些文章,实现模式窗口有两种方式.window.showModalDialog以及window.open. 一.方式介绍 window.open()支持环境: JavaScript1.0+/JScr ...

  6. 在Winform框架的多文档界面中实现双击子窗口单独弹出或拖出及拽回的处理

    在基于DevExpress的多文档窗口界面中,我们一般使用XtraTabbedMdiManager来管理多文档窗口的一些特性,如顶部菜单,页面的关闭按钮处理,以及一些特殊的设置,本篇随笔介绍这些特点, ...

  7. android在桌面弹出一个窗口

    android在桌面弹出一个窗口 遇到了这种需求,要和iPhone一样的效果. 下面是简单实现功能,优化和美化部分,有时间慢慢搞. 方法应该有不少吧,我用的是弹出一个activity,将这个activ ...

  8. 用MPLAB IDE编程时,软件总是弹出一个窗口提示: “the extended cpu mode configuration bit is enabled,but the program that was loaded was not built using extended cpu instructions. therefore,your code may not work properly

    用MPLAB IDE编程时,软件总是弹出一个窗口提示:"the extended cpu mode configuration bit is enabled,but the program ...

  9. 通过script src引入ElementUI时,使用语句:window.ELEMENT.MessageBox.alert(xxx) 调用弹出框

    通过script src引入ElementUI时,使用语句:window.ELEMENT.MessageBox.alert(xxx) 调用弹出框.

随机推荐

  1. SQL 使用存储过程创建报表的一点体会

    以前创建报表的时候都是采用视图的方式来实现的,通过把关联的表字段选取后形成需要的报表,用起来也比较方便. 最近也尝试用存储过程来做一些开发,确实也方便不少,因为很多逻辑关系都可以灵活的在SQL来实现, ...

  2. 开始使用THREE.JS

    开始使用THREE.JS 译序 Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D.但是目前这项技术还处在发展阶段,资料极为匮乏, ...

  3. flask 真是太棒啦,阅读手册后就能做出一个博客了

    真是很好的东西,有很多有益处的东西. 有template引擎, 有flask自己带的g (用来处理访问与数据库打开关闭的) 有flask自己的处理session的功能 自带的jinja2模板引擎也是比 ...

  4. strut2读源码记录

    首先你得准备一个很简单的struts2的程序,可以发一次请求后能返回一个正确的响应,当然,struts2的源码也要有,我这里用的myeclipse调试的,本来是想用eclipse,因为本人习惯于用ec ...

  5. 杭电OJ——1011 Starship Troopers(dfs + 树形dp)

    Starship Troopers Problem Description You, the leader of Starship Troopers, are sent to destroy a ba ...

  6. 【转】简单十步让你全面理解SQL

    简单十步让你全面理解SQL 很多程序员认为SQL是一头难以驯服的野兽.它是为数不多的声明性语言之一,也因为这样,其展示了完全不同于其他的表现形式.命令式语言. 面向对象语言甚至函数式编程语言(虽然有些 ...

  7. MVC源码解析 - Http Pipeline 解析(下)

    接上一篇, 我在 HttpModule 的Init方法中, 添加了自己的事件, 在Pipeline里, 就会把握注册的事件给执行了. 那么Pipeline是如何执行并且按照什么顺序执行的呢? 现在我们 ...

  8. 分别使用Hadoop和Spark实现二次排序

    零.序(注意本部分与标题无太大关系,可直接调至第一部分) 既然没用为啥会有序?原因不想再开一篇文章,来抒发点什么感想或者计划了,就在这里写点好了: 前些日子买了几本书,打算学习和研究大数据方面的知识, ...

  9. Docker集群实验环境布署--swarm【1 架构说明】

    在读完<Docker技术入门与实践>这本书后,基本上已对Docker了有一些入门的理解,以及我们为什么要使用Docker 答:我们发现在实际工作中,通过openstack一旦把一个VM创建 ...

  10. linux添加swap

    一. 起因 发现云服务器重装后没有swap分区 于是我们分出一些物理内存做swap分区.. 二. 经过 (1)创建块文件 sudo dd if=/dev/zero of=/tmp/big_swap b ...