初学javascript,就想动手重写下alter和confirm,自带的真的太丑了,刚看了javascript oo写法,就想着模仿一下,直接上代码
//消息对话框
var MessageBox = (function () {
var
Msg = {
baseUrl: "",
//初始化函数
init: function () {
this.omask = null;
this.messageBox = null;
this.callback = null;
this.frame = null;
this.clientWidth = $(window).width();
this.clientHeight = $(window).height();
this.offsetWidth = $(document).width();
this.offsetHeight = $(document).height();
if($.browser.msie){ //判断ie
this.offsetWidth -= 4;
this.offsetHeight -= 4;
}
$("body").append("<div class=\"messageObody\"></div>");
this.obody = $(".messageObody");
this.obody.width(this.offsetWidth);
this.obody.height(this.offsetHeight);
},
//创建对话框
createMessageBox: function (title, msg, btn, icon) {
if (!title) title = "消息";
if (!msg) msg = "";
var messageBoxDiv = "<div class=\"messageBox\">";
messageBoxDiv += "<div class=\"messageBox-top \">";
messageBoxDiv += "<div class=\"messageBox-top-title messageBox-bg\">" + title + "</div>"
messageBoxDiv += "<div class=\"messageBox-top-close messageBox-bg\" onclick=\"MessageBox.cancle();\"><img src=\"" + this.baseUrl + "img/cancel.png\" /></div>";
messageBoxDiv += "</div>";
messageBoxDiv += "<div class=\"messageBox-content\">";
messageBoxDiv += "<div class=\"messageBox-context-img\">";
if (icon) {
messageBoxDiv += "<img src=\"" + icon + "\"/>";
}
messageBoxDiv += "</div>";
messageBoxDiv += "<div class=\"messageBox-context-msg\">" + msg + "</div>";
messageBoxDiv += "</div>"
messageBoxDiv += "<div class=\"messageBox-button\">";
messageBoxDiv += "[list]";
if (btn == "YESORNO") {
messageBoxDiv += "[*]<a href=\"javascript:MessageBox.cancle();\" class=\"button messageBox-bg\"><img src=\"" + this.baseUrl + "img/cancel.png\" />取消</a>
"
}
messageBoxDiv += "[*]<a href=\"javascript:MessageBox.deter();\" class=\"button messageBox-bg\"><img src=\"" + this.baseUrl + "img/ok.png\" />确定</a>
"
messageBoxDiv += "[/list]";
messageBoxDiv += "</div>";
this.obody.append(messageBoxDiv);
this.messageBox = $(".messageBox");
this.frame = $(".messageBox-top-title");
this.messageBox.css("left", Math.ceil((this.clientWidth - this.messageBox.width()) / 2) + "px");
this.messageBox.css("top", Math.ceil((this.clientHeight - this.messageBox.height()) / 2) + "px");
//鼠标按下事件
this.frame.bind("mousedown", function(){
var point = { x: event.clientX, y: event.clientY };
if (Msg.frame.setCapture) { //防止ie下拖动过快丢失对象
Msg.frame.setCapture();
} else if (window.captureEvents) {
window.captureEvents(event.MOUSEMOVE | event.MOUSEUP);
}
$(document).bind("mousemove", function(){
var
left = Msg.messageBox.css("left"),
top = Msg.messageBox.css("top"),
width = $(document).width(),
height = $(document).height();
left = left.substring(0, left.length - 2);
top = top.substring(0, top.length - 2);
left = event.clientX - point.x + parseInt(left);
top = event.clientY - point.y + parseInt(top);
//超出窗口边界
if(left < 0) left = 0;
else if(left + Msg.messageBox.width() > width)left = width - Msg.messageBox.width() - 1;
if(top < 0) top = 0;
else if(top + Msg.messageBox.height() > height) top = height - Msg.messageBox.height() - 1;
Msg.messageBox.css("left", left + "px");
Msg.messageBox.css("top", top + "px");
point = { x: event.clientX, y: event.clientY };
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); //取消选择文本,好像没什么用
});
return false; //返回flase就可以使chorme下 鼠标:move样式丢失
});
//鼠标弹出
$(document).bind("mouseup", function(){
if (Msg.frame.releaseCapture) {
Msg.frame.releaseCapture();
} else if (window.captureEvents) {
window.captureEvents(event.MOUSEMOVE | event.MOUSEUP);
}
$(document).unbind("mousemove");
});
//绑定窗口大小改变事件
$(window).bind("resize", function(){
//没跟新函数里面的值
var
width = $(document).width(),
height = $(window).height();
Msg.omask.width(width);
Msg.omask.height($(document).height());
Msg.messageBox.css("left", Math.ceil((width - Msg.messageBox.width()) / 2) + "px");
Msg.messageBox.css("top", Math.ceil((height - Msg.messageBox.height()) / 2) + "px");
});
},
//带确认按钮的对话框
//title: 标题
//msg: 正文消息
//callback: 关闭文本框后的回调函数
//isModel: 是否有遮罩层 true非模态
alert: function (title, msg, callback, icon, isModel) {
if (!isModel) {
this.mask(); //弹出遮罩
}
this.createMessageBox(title, msg, "YES", icon);
this.callback = callback;
},
//带是和否的对话框
confirm: function (title, msg, callback, icon, isModel) {
if (!isModel) {
this.mask();
}
this.createMessageBox(title, msg, "YESORNO", icon);
this.callback = callback;
},
//隐藏对话框
hide: function () {
if (this.mask) {
this.omask.hide();
}
this.messageBox.hide();
},
//显示隐藏对话框
show: function () {
if (this.omask) {
this.omask.show();
}
this.messageBox.show();
},
//销毁对话框
destory: function (callback) {
$(window).unbind("resize"); //取消窗口大小改变事件
this.obody.remove();
/*this.messageBox.unbind();
if (this.omask) {
this.omask.remove();
}
this.messageBox.remove();*/
},
deter: function () {
this.destory();
if (this.callback) {
this.callback(true);
}
},
cancle: function () {
this.destory();
if (this.callback) {
this.callback(false);
}
},
//遮罩
mask: function () {
var maskDiv = "<div class=\"maskDiv\"></div>";
this.obody.append(maskDiv);
this.omask = $(".maskDiv");
this.omask.width(this.offsetWidth);
this.omask.height(this.offsetHeight);
}
};
return {
//错误图标
ERROR: Msg.baseUrl + "img/icon-error.gif",
//信息图标
INFO: Msg.baseUrl + "img/icon-info.gif",
//疑问图标
QUESTION: Msg.baseUrl + "img/icon-question.gif",
//提醒图标
WARNING: Msg.baseUrl + "img/icon-warning.gif",
alert: function (title, msg, callback, icon, isModel) {
Msg.init();
Msg.alert(title, msg, callback, icon);
},
confirm: function (title, msg, callback, icon, isModel) {
Msg.init();
Msg.confirm(title, msg, callback, icon, isModel);
},
deter: function () {
Msg.deter();
},
//取消按钮
cancle: function () {
Msg.cancle();
}
}
})();
用法:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript" src="jquery-1.4.3.min.js"></script>
<script type="text/javascript" src="MessageBox.js"></script>
<link href="MessageBox.css" type="text/css" rel="stylesheet" />
</head>
<body >
[url=javascript:test()]confirm[/url]
[url=javascript:MessageBox.alert('提示', 'aa',null, MessageBox.WARNING)]alert[/url]
<script type="text/javascript">
function test(){
MessageBox.confirm('消息', "提示,请登录后在操作!", function(btn){
if(btn){
// alert('你点了是');
}else{
// alert('你点了否');
}
}, MessageBox.ERROR);
}
</script>
</body>
</html>
效果图:
- 大小: 12 KB
分享到:
相关推荐
Fancybox正是利用jQuery的强大功能,实现了图片预览的弹窗效果。 **二、jQuery Fancybox介绍** jQuery Fancybox是一个轻量级的插件,其主要功能是创建一个美观的、具有多种自定义选项的弹出窗口,用于展示图片、...
【标题】基于JQuery开发的弹窗插件 在Web开发中,弹窗是一种常见的交互方式,用于显示警告、确认信息或提供用户输入等。JQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等...
本文将深入探讨如何使用jQuery实现一个功能丰富的提示弹窗,包括正确、错误和警告三种类型。 首先,jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。在实现提示弹窗时,jQuery...
在"jquery-confirm-master"这个压缩包中,包含了这个jQuery弹窗组件的所有源码和资源。通常,它会包含以下内容: 1. **CSS文件**:这些文件(如`jquery-confirm.css`)包含了弹窗的样式定义,确保弹窗在各种浏览器...
"基于jQuery可高度自定义的弹窗组件"就是这样一个解决方案,它旨在为开发者提供灵活、强大的功能,以满足不同场景下的弹窗需求。这个组件能够运行在多种浏览器上,包括IE、Safari和Firefox,确保了跨平台兼容性。 ...
总结起来,这个基于jQuery的轻量级js弹窗插件是一个基础但具有潜力的项目,它的目标是提供一个简单易用的弹窗解决方案。虽然目前功能有限,但通过进一步开发和完善,有望成为一个功能全面、高度定制化的弹窗工具,...
本篇文章将深入探讨一个基于jQuery的右下角弹窗插件,分析其核心概念、使用方法以及如何进行功能扩展。 **一、插件核心概念** 1. **jQuery选择器与DOM操作**:jQuery插件通常是围绕选择器和DOM操作构建的。该右下...
以压缩包中的“jquery-tcc-150408232329”为例,这是一个可能的jQuery弹窗插件。首先,需要引入jQuery库和该插件的脚本文件。接着,可以使用以下代码来创建并显示一个弹窗: ```html <!DOCTYPE html> <title>...
jQuery Alert是一款基于jQuery库的弹窗插件,用于在网页中实现更为美观和功能丰富的对话框效果。这个插件能够帮助开发者轻松创建各种类型的提示、警告、确认和自定义消息框,而不再局限于浏览器自带的alert函数。在...
jQuery 是一个轻量级的 JavaScript 库,它简化了 DOM 操作、事件处理和动画等功能,使得创建自定义弹窗插件变得相对容易。本插件即为基于 jQuery 的可移动弹窗实现,旨在提供一种简单易用、功能实用的解决方案。 ...
这两种方法都基于jQuery的事件处理和DOM操作功能,下面将详细介绍这两种实现方式。 ### 1. 使用jQuery UI Modal Dialog jQuery UI库提供了一种简单易用的模态对话框功能。首先,你需要在项目中引入jQuery和jQuery ...
本教程将深入探讨如何基于jQuery构建一个弹窗提示插件,并探讨相关技术细节。 ### 1. jQuery基础知识 在讨论插件之前,我们需要了解jQuery的基础。jQuery提供了一种简洁的方式来选择DOM元素、操作它们、添加事件...
* Msbox是一个超轻量级的弹出提示窗口Jquery插件,基于jquery-1.8.3开发 * 主要实现自定义弹窗提示效果:成功提示、警告提示、错误提示、询问提示、消息提示五种提示效果 * @name Msbox * @author ChenZhen || ...
**基于jQuery的图片弹窗预览插件:fancyPic** 在Web开发中,图片预览功能是一项常用且重要的需求,特别是在用户需要查看大图或者多图时。jQuery作为一个轻量级、高性能的JavaScript库,提供了丰富的插件来简化此类...
jquery.messagebox.js插件,一个基于jquery的弹窗插件,ui效果设计不错 典型的轻量级的,附件提供了四种常用的弹窗效果 每次弹出或者收回的效果均是从顶部下拉或者反弹回去 使用方法: 1、将head中的样式...
首先,jQuery是一个强大的JavaScript库,它简化了JavaScript代码的编写,使得DOM操作、事件处理、动画设计变得更加容易。使用jQuery创建气泡弹窗下拉提示,可以减少开发时间和提高效率。 在"基于jquery的气泡弹窗,...
jQuery弹窗通常基于JavaScript的DOM操作和事件处理功能,通过创建或修改DOM元素来实现弹出效果。jQuery提供了`.show()`, `.hide()` 和 `.toggle()`等方法来控制元素的可见性,配合CSS样式,可以轻松创建动态显示和...
3. **定义弹窗CSS**:为了实现弹窗效果,我们需要创建一个CSS类来定义弹窗的样式。弹窗通常是绝对定位,以覆盖页面其他元素,并具有透明度控制。 ```css .popup { position: fixed; top: 50%; left: 50%; ...
《基于jQuery和SimplePop.js实现弹窗效果的详解》 在网页开发中,弹窗效果是一种常见的用户交互设计,用于提示信息、展示内容或者进行确认操作等。jQuery库以其简洁的API和良好的浏览器兼容性,成为了JavaScript...