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 相关文章推荐
Aptana调试javascript图解教程
Nov 30 Javascript
c#和Javascript操作同一json对象的实现代码
Jan 17 Javascript
qTip2 精致的基于jQuery提示信息插件
Feb 17 Javascript
js给onclick事件赋值,动态传参数实例解说
Mar 28 Javascript
Javascript的闭包详解
Dec 26 Javascript
详解JS正则replace的使用方法
Mar 06 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
Dec 16 Javascript
详解Web使用webpack构建前端项目
Sep 23 Javascript
JS中注入eval, Function等系统函数截获动态代码
Apr 03 Javascript
Vue基本使用之对象提供的属性功能
Apr 30 Javascript
js实现多个标题吸顶效果
Jan 08 Javascript
js实现九宫格抽奖
Mar 19 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
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
python实现连续图文识别
2018/12/18 Python
pyqt 实现为长内容添加滑轮 scrollArea
2019/06/19 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
python访问hdfs的操作
2020/06/06 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
法律专业实习鉴定
2013/12/22 职场文书
机械制造专业个人的自我评价
2013/12/28 职场文书
大一新生学期自我评价
2014/04/09 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
2014年小学工作总结
2014/11/26 职场文书
思想品德评语大全
2014/12/31 职场文书