啥也不说,先上图,有图有真相 :)

现在绝大多数网站都不用自带的alert和confirm了,因为界面太生硬了。因此这个插件就这样产生了...

来看插件的实现代码吧:

(function () {$.MsgBox = {Alert: function (title, msg) {GenerateHtml("alert", title, msg);btnOk();  //alert只是弹出消息,因此没必要用到回调函数callbackbtnNo();},Confirm: function (title, msg, callback) {GenerateHtml("confirm", title, msg);btnOk(callback);btnNo();}}//生成Htmlvar GenerateHtml = function (type, title, msg) {var _html = "";_html += '<div id="mb_box"></div><div id="mb_con"><span id="mb_tit">' + title + '</span>';_html += '<a id="mb_ico">x</a><div id="mb_msg">' + msg + '</div><div id="mb_btnbox">';if (type == "alert") {_html += '<input id="mb_btn_ok" type="button" value="确定" />';}if (type == "confirm") {_html += '<input id="mb_btn_ok" type="button" value="确定" />';_html += '<input id="mb_btn_no" type="button" value="取消" />';}_html += '</div></div>';//必须先将_html添加到body,再设置Css样式$("body").append(_html); GenerateCss();}//生成Cssvar GenerateCss = function () {$("#mb_box").css({ width: '100%', height: '100%', zIndex: '99999', position: 'fixed',filter: 'Alpha(opacity=60)', backgroundColor: 'black', top: '0', left: '0', opacity: '0.6'});$("#mb_con").css({ zIndex: '999999', width: '400px', position: 'fixed',backgroundColor: 'White', borderRadius: '15px'});$("#mb_tit").css({ display: 'block', fontSize: '14px', color: '#444', padding: '10px 15px',backgroundColor: '#DDD', borderRadius: '15px 15px 0 0',borderBottom: '3px solid #009BFE', fontWeight: 'bold'});$("#mb_msg").css({ padding: '20px', lineHeight: '20px',borderBottom: '1px dashed #DDD', fontSize: '13px'});$("#mb_ico").css({ display: 'block', position: 'absolute', right: '10px', top: '9px',border: '1px solid Gray', width: '18px', height: '18px', textAlign: 'center',lineHeight: '16px', cursor: 'pointer', borderRadius: '12px', fontFamily: '微软雅黑'});$("#mb_btnbox").css({ margin: '15px 0 10px 0', textAlign: 'center' });$("#mb_btn_ok,#mb_btn_no").css({ width: '85px', height: '30px', color: 'white', border: 'none' });$("#mb_btn_ok").css({ backgroundColor: '#168bbb' });$("#mb_btn_no").css({ backgroundColor: 'gray', marginLeft: '20px' });//右上角关闭按钮hover样式$("#mb_ico").hover(function () {$(this).css({ backgroundColor: 'Red', color: 'White' });}, function () {$(this).css({ backgroundColor: '#DDD', color: 'black' });});var _widht = document.documentElement.clientWidth;  //屏幕宽var _height = document.documentElement.clientHeight; //屏幕高var boxWidth = $("#mb_con").width();var boxHeight = $("#mb_con").height();//让提示框居中$("#mb_con").css({ top: (_height - boxHeight) / 2 + "px", left: (_widht - boxWidth) / 2 + "px" });}//确定按钮事件var btnOk = function (callback) {$("#mb_btn_ok").click(function () {$("#mb_box,#mb_con").remove();if (typeof (callback) == 'function') {callback();}});}//取消按钮事件var btnNo = function () {$("#mb_btn_no,#mb_ico").click(function () {$("#mb_box,#mb_con").remove();});}
})();

Html代码结构如下,js里面拼接的不直观,给出如下:

<div id="mb_box"></div>
<div id="mb_con"><span id="mb_tit">title</span><a id="mb_ico">x</a><div id="mb_msg">msg</div><div id="mb_btnbox"><input id="mb_btn_ok" type="button" value="确定" /><input id="mb_btn_no" type="button" value="取消" /></div>
</div>

  mb_box为半透明遮罩层,将整个页面遮住,禁止操作;mb_con为提示框。之所以没把mb_con放在mb_box里面,是因为如果放里面的话,对mb_box设置的透明度会影响到mb_con,使mb_con也会变成透明的。之前也试过 font-family: Verdana, Arial, Helvetica, sans-serif;">

  为了使插件使用方便,特意的没有用到图片,全是通过css来控制界面效果,使用时,引用一个js文件就可以了。css样式在js中写死了,这点可能不太灵活,但使用却很方便如果你对界面样式不满意或者与你网站的色彩风格不一致,那只能自行修改了。

  由于弹出层(div)无法做到像原始的alert和confirm那样做到页面阻塞效果,因此只能通过 回调函数 来进行模拟。也因为这个原因,后台数据操作只能通过回调函数配合ajax来完成的。

Demo如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>模拟alert和confirm提示框</title>
</head>
<body><input id="add" type="button" value="添加" /><input id="delete" type="button" value="删除" /><input id="update" type="button" value="修改" /><script src="../js/jquery-1.4.1.min.js" type="text/javascript"></script><script src="../js/jquery.similar.msgbox.js" type="text/javascript"></script><script type="text/javascript">$("#add").bind("click", function () {$.MsgBox.Alert("消息", "哈哈,添加成功!");});//回调函数可以直接写方法function(){}$("#delete").bind("click", function () {$.MsgBox.Confirm("温馨提示", "执行删除后将无法恢复,确定继续吗?温馨提示", function () { alert("你居然真的删除了..."); });});function test() {alert("你点击了确定,进行了修改");}//也可以传方法名 test$("#update").bind("click", function () {$.MsgBox.Confirm("温馨提示", "确定要进行修改吗?", test);});//当然你也可以不给回调函数,点击确定后什么也不做,只是关闭弹出层     //$("#update").bind("click", function () { $.MsgBox.Confirm("温馨提示", "确定要进行修改吗?"); });</script>
</body>
</html>

模拟alert和confirm相关推荐

  1. 模拟alert,confirm,prompt

    以前项目上用的那个虽然也是自己写的,但是是基于JQ的,前不久看到人人网出的JS有道考题和这个很像,所以就用原生JS重写了一遍: JS (function(win){var tips = {'title ...

  2. html的confirm弹窗样式修改,模拟自定义alert与confirm样式

    前段时间做ACG Balrogs的时候感觉系统自带的alert与confirm非常难看,所以百度了一下这两个的自定义,但是一看百度上面的代码!WTF?什么鬼,根本看不懂,对于我这种js渣来说简直是在看 ...

  3. jquery自定义对话框alert、confirm和prompt

    jQuery Alert Dialogs,又一个基于jQuery的提示框插件,主要包括Alert.Confirm.prompt这三种,还有一个高级范例,可以在提示框内嵌入HTML语言,可以自定义风格样 ...

  4. WKWebView Safari调试、JS互调、加载进度条、JS中alert、confirm、prompt

    主要内容 Safari调试 swift/OC与JS互调 增加加载进度条 支持JS中alert.confirm.prompt Safari调试 设置 -> safari --> 高级,开启J ...

  5. java弹出网页alter_JavaScript三种弹出框(alert,confirm和prompt)用法举例

    我们在做网页交互的时候往往需要用户在操作之前弹出一个提示消息框来让用户做一些点击才能继续或者放弃,这里有三种模式消息框,它们分别是alert(),confirm()和prompt().下面我用最简单的 ...

  6. 基于Selenium2+Java的UI自动化(6)-操作Alert、confirm、prompt弹出框

    alert.confirm.prompt这样的js对话框在selenium1 时代处理起来比价麻烦,常常要用autoit来帮助处理. 而现在webdriver对这些弹出框做了专门的处理,使用selen ...

  7. 重构alert,confirm

    最近写了一个重构的alert,confirm控件,调用时直接使用alert,confirm即可 //调用方法 alert("提示语")window.confirm('你确定要删除该 ...

  8. alert,confirm和prompt

    1.警告消息框alert alert 方法有一个参数,即希望对用户显示的文本字符串.该字符串不是 HTML 格式.该消息框提供了一个"确定"按钮让用户关闭该消息框,并且该消息框是模 ...

  9. 如何处理alert、confirm、prompt对话框

    1 import java.io.File; 2 3 import org.openqa.selenium.Alert; 4 import org.openqa.selenium.By; 5 impo ...

最新文章

  1. 尤雨溪携手字节前端专家,畅聊 Vue 3.0 前端技术新趋势
  2. 为全局变量赋值_Postman全局变量设置和运用
  3. 在Scrollview中使用AutoLayout
  4. pta - 1132 Cut Integer
  5. 一用户使用LTC以168万美元的价格购入收藏界“圣杯“卡片
  6. tensorflow 基础: static shape VS Dynamic shape, get_shape VS tf.shape() , reshape VS set_shape
  7. 误删除分区下的数据恢复
  8. 通过ssh证书远程登录
  9. 变异检测VarScan软件使用说明
  10. python绘图总结2
  11. matlab方差分析
  12. clickhouse: A股bar数据与物化视图尝试
  13. oracle多少条commit比较好,oracle什么时候须要commit
  14. kali linux常用命令
  15. 数据结构与算法笔记 二叉树、二叉搜索树、二叉平衡树的区分与关系
  16. 5.1.3 NoSQL数据库-Redis(键值key-value)-五大数据类型
  17. Rect 和 Bounds
  18. php 实现繁体转简体代码效率对比
  19. vue自动滚动组件 可以支持鼠标滚轮操作
  20. UICC 之 USIM 详解全系列——USIM鉴权函数说明以及鉴权向量结构

热门文章

  1. C语言实现UDP网络通信(附服务端和客服端完整源码)
  2. c++ assert()断言
  3. QT的QQuickStyle类的使用
  4. C++ Opengl 粒子系统(Particles)源码
  5. 「MacOS」Mac快捷键
  6. mapreduce的shuffle机制(来自学习笔记)
  7. Spring整合的quartz任务调度的实现方式
  8. 窗口分析函数_13_生成相邻上一个元素
  9. Python基础概念_8_字符串处理
  10. 【python-numpy】工具包中np.random.choice()的用法详解及其参考