javascript Demo模态窗口


Posted in Javascript onDecember 06, 2009

下面这个Demo支持回调,可以直接引用modalDialog.js使用,不存在任何Jquery的影子
global.js

window.js = new myJs(); //为了避免名称重复我们换个名称,附加一个myJs对像到window对象上,然后我们在页面中调用window.js 
//js对象 
function myJs() { 
this.x = 10; 
} 
//下面我们对myJs进行扩展 
myJs.prototype.alert = function (msg) { alert(msg); } //一个alert方法测试调用js.alert('弹出提示'); 
//获取制定Id的dom对象 
myJs.prototype.$ = function (id) { return document.getElementById(id); } 
myJs.prototype.bodyWidth = document.documentElement.clientWidth; 
myJs.prototype.bodyHeight = document.documentElement.clientHeight; 
myJs.prototype.body = document.body;

modalDialog.js 文件代码如下:
代码
//Modaldialog 
function modalDialog() { 
this.uri ="about:blank"; //地址 
this.title = null; //标题 
this.width = 400; //默认宽 
this.height = 300; //默认高 
this.borderColor = "black"; //边框颜色 
this.borderWidth = 2; //边框宽度 
this.callback = null; //回调方法 
this.background = "black"; 
this.titleBackground = "silver"; 
} 
modalDialog.prototype.url = this.uri; //这样不用扩展也是可以的但是在页面中只能提示找不到这个属性 
modalDialog.prototype.title = this.title; 
modalDialog.prototype.width = this.width; 
modalDialog.prototype.height = this.height; 
modalDialog.prototype.background = this.background; 
modalDialog.prototype.borderWidth = this.borderWidth; 
modalDialog.prototype.borderColor = this.borderColor; 
modalDialog.prototype.titleBackground = this.titleBackground; 
modalDialog.prototype.callback = this.callback; 
//触发回调方法 
modalDialog.prototype.call = function (callback) { if (callback != null) callback(this); if (this.callback != null) this.callback(); } 
//显示 
modalDialog.prototype.show = function () { 
var js = window.js; 
//在里面实现显示的细节 
var x = js.bodyWidth, y = js.bodyHeight; 
//先创建一个层遮罩整个body 
var zdiv = "zdiv"; //遮罩层id 
document.body.innerHTML += "<div id='" + zdiv + "' style='width:" + x + "px;height:" + y + "px;background-color:" + 
this.background + ";position:absolute;top:0;left:0;" + 
"filter:alpha(opacity=80);opacity:0.8;z-index:'></div>"; 
var mdiv = "mdiv"; //模态窗口层id 
document.body.innerHTML += "<div id='" + mdiv + "' style='width:" + this.width + "px;height:" + this.height + "px;" + 
"border:solid " + this.borderWidth + "px " + this.borderColor + ";z-index:20;position:absolute;top:" + 
(y - this.height) / 2 + ";left:" + (x - this.width) / 2 + ";'>" + 
//加上标题 
(this.title != null ? "<div style='background:" + this.titleBackground + ";line-height:30px;padding:0 10px;width:100%'>" + this.title + "</div>" : "") + 
"<div style='padding:1px;'><iframe src='" + this.uri + "' frameborder='0' scrolling='no' style='width:" + (this.width) + "px;height:" + 
(this.title != null ? this.height - 30 : this.height) + "px;'></iframe></div></div>"; 
} 
modalDialog.prototype.close = function () { 
document.body.removeChild(window.js.$("mdiv")); 
document.body.removeChild(window.js.$("zdiv")); 
}

default.html 页面上创建modalDialog
代码
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>模态窗口Demo</title> 
<!--下面这个js文件为我们的公共js文件--> 
<script type="text/javascript" src="global.js"></script> 
<!--ModalDialog UI js文件--> 
<script type="text/javascript" src="modaldialog.js"></script> 
<script type="text/javascript"> 
var md; //用于页面回调 
var uri = "/test.html"; 
function showModalDialog() { 
//处理打开模态窗口 
var m = new modalDialog(); 
m.uri = uri; 
m.title = "模态窗口"; 
m.background = "white"; 
m.borderColor = "orange"; 
m.borderWidth = 2; 
m.titleBackground = "gold"; 
m.callback = function () { m.close(); } 
// m.call(); 这个回调方法在modalDialog的Uri中调用 
m.show(); 
md = m; 
} 
</script> 
</style> 
</head> 
<body> 
<div> 
用javascript+css实现ModalDialog<br /> 
Jquery框架里面有个插件也可以实现这种效果,不过我们说的是自己实现 
<br /> 
<input id="btopenDialog" type="button" value="打点模态窗口!" onclick="showModalDialog()" /> 
</div> 
</body> 
</html>

在modalDialog页面中使用window.parent.md.call()触发回调函数
文件打包三水点靠木下载
Javascript 相关文章推荐
用js实现控制内容的向上向下滚动效果
Jun 26 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
Feb 10 Javascript
js获取php变量的实现代码
Aug 10 Javascript
探讨js中的双感叹号判断
Nov 11 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
Nov 12 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
Jun 04 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
Mar 08 Javascript
深入理解jQuery 事件处理
Jun 14 Javascript
浅谈Angular 的变化检测的方法
Mar 01 Javascript
详解VS Code使用之Vue工程配置format代码格式化
Mar 20 Javascript
JS实现分页导航效果
Feb 19 Javascript
ant-design-vue中tree增删改的操作方法
Nov 03 Javascript
jquery select操作的日期联动实现代码
Dec 06 #Javascript
JSON 编辑器实现代码
Dec 06 #Javascript
JS 控制非法字符的输入代码
Dec 04 #Javascript
对采用动态原型方式无法展示继承机制得思考
Dec 04 #Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
Dec 04 #Javascript
javascript 跳转代码集合
Dec 03 #Javascript
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
Dec 03 #Javascript
You might like
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
对盗链说再见...
2006/10/09 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
php生成mysql的数据字典
2016/07/07 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
input 输入框内的输入事件详细分析
2010/03/17 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
深入理解Vue nextTick 机制
2018/04/28 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
javascript实现日历效果
2019/06/17 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
Python图算法实例分析
2016/08/13 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
Intersport西班牙:在线体育商店
2019/11/06 全球购物
自动化专业个人求职信范文
2013/11/29 职场文书
产品发布会策划方案
2014/05/12 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
导游词格式
2015/02/13 职场文书
第一书记观后感
2015/06/08 职场文书
创业计划书之香辣虾火锅
2019/09/23 职场文书