当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript Demo模态窗口

Javascript
csdn 博客的css样式 v3
javascript 常用代码技巧大收集
javascript div 弹出可拖动窗口
jQuery 使用个人心得
ajax 文件上传应用简单实现
用正则表达式 动态创建/增加css style script 兼容IE firefox
10个新的最有前途的JavaScript框架
自动完成JS类(纯JS, Ajax模式)
JavaScript 颜色梯度和渐变效果
IE6与IE7中,innerHTML获取param的区别
for 循环性能比较 提高for循环的效率
Ext javascript建立超链接,进行事件处理的实现方法
利用javascript移动div层-javascript 拖动层
jQuery 全选效果实现代码
一个tab标签切换效果代码
提取自百度有啊的css圆角效果
可左右平滑滚动的产品展示效果
响应鼠标变换表格背景或者颜色的代码
ymyang 绘图 实例代码
JS 单击连接保存图片的函数

Javascript 中的 javascript Demo模态窗口


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 91 ::
收藏到网摘: n/a

不多介绍了,应该见很多了,见过很多网站用的是Jquery的插件,个人觉得不够灵活。 下面这个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()触发回调函数
文件打包软晨学习网下载