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 相关文章推荐
jQuery 扩展对input的一些操作方法
Oct 30 Javascript
jQuery Lightbox 图片展示插件使用说明
Apr 25 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
May 07 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
Sep 06 Javascript
Bootstrap模仿起筷首页效果
May 09 Javascript
js+html5实现canvas绘制网页时钟的方法
May 21 Javascript
jQuery实现的手风琴侧边菜单效果
Mar 29 jQuery
详解通过JSON数据使用VUE.JS
May 26 Javascript
bootstrap Table实现合并相同行
Jul 19 Javascript
24行JavaScript代码实现Redux的方法实例
Nov 17 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
May 06 Javascript
vue实现移动端触屏拖拽功能
Aug 21 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
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
php自定义的格式化时间示例代码
2013/12/05 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
JavaScript 图像动画的小demo
2012/05/23 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
jQuery实现折叠、展开的菜单组效果代码
2015/09/16 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
基于BootStrap的Metronic框架实现页面链接收藏夹功能按钮移动收藏记录(使用Sortable进行拖动排序)
2016/08/29 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
vue集成kindeditor富文本的实现示例代码
2019/06/07 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
python函数局部变量用法实例分析
2015/08/04 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
python3 求约数的实例
2019/12/05 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
python各层级目录下import方法代码实例
2020/01/20 Python
python中round函数保留两位小数的方法
2020/12/04 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
波兰在线儿童和婴儿用品零售商:pinkorblue
2019/06/29 全球购物
物流司机岗位职责
2013/12/28 职场文书
男方父母证婚词
2014/01/12 职场文书
商务英语专业求职信范文
2014/01/28 职场文书
工作总结与自我评价
2014/09/18 职场文书
遗嘱格式范本
2015/08/07 职场文书
三好学生竞选稿
2015/11/21 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
Mysql排序的特性详情
2021/11/01 MySQL
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang