父页面

<!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. 从零开始学C++之构造函数与析构函数(三):深拷贝与浅拷贝、空类

    一.深拷贝与浅拷贝 说得简单点,假设一个类有指针成员,如果在拷贝的时候顺带连指针指向的内存也分配了,就称为深拷贝:如果只是分配指针本身的内存,那就是浅拷贝.浅拷贝造成的问题是有两个指针指向同块内存,d ...

  2. 利刃 MVVMLight 2:Model、View、ViewModel结构以及全局视图模型注入器的说明

         上一篇我们已经介绍了如何使用NuGet把MVVMLight应用到我们的WPF项目中.这篇我们来了解下一个基本的MVVMLight框架所必须的结构和运行模式. MVVMLight安装之后,我们 ...

  3. C# 关于委托的小例子

    本例子是一个关于委托的小例子[猫叫,狗跳,人喊]. 委托是C#开发中一个非常重要的概念,理解起来也和常规的方法不同,但一旦理解清楚,就可以信手拈来,随处可用. 委托是对方法的抽象.它存储的就是一系列具 ...

  4. ASP.NET Zero--6.菜单加权限

    1.打开文件MpaNavigationProvider.cs [..\MyCompanyName.AbpZeroTemplate.Web\Areas\Mpa\Startup\MpaNavigation ...

  5. CSS控制文本在一行内显示,若有多余字符则使用省略号表示

    强制文本在一行内显示,多余字符使用省略号 text-overflow: ellipsis; overflow: hidden; white-space: nowrap;

  6. 使用Gradle编译release apk报错:Please correct the above warnings first

    在开发SDK的过程中,遇到了一个研发,使用了自己的SDK之后遇到了各种问题,于是我们自己帮忙接入. 所有代码都接入完成之后,准备export出一个release包,但是此时却报错: 此时出现了很多的w ...

  7. 最强DE 战斗力 (nyoj 541)

    题解链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=541 几天前百度题解后用数学知识AC的,后来大牛说这是一道动态规划题. 网上的数学解题链接 ...

  8. MVC-Area

    ASP.NET MVC中,是依靠某些文件夹以及类的固定命名规则去组织model实体层,views视图层和控制层的.如果是大规模的应用程序,经常会由不同功能的模块组成,而每个功能模块都由MVC中的三层所 ...

  9. leetcode medium

    419. Battleships in a Board --No iven an 2D board, count how many different battleships are in it. T ...

  10. MATLAB初体验

    好激动 要入MATLAB的大坑了 恩 很遗憾第一个程序并不是hello world 好 插入代码里并没有MATLAB这个选项 这是一种歧视 x=[:pi/:*pi]; y=sin(x); plot(x ...