使用jQuery实现更改默认alert框体


Posted in Javascript onApril 13, 2015

更改框体主要用到的是更改系统的内置控件winpop下面是winpop具体代码

(function(window, jQuery, undefined) {
 
   var HTMLS = {
     ovl: '<div class="J_WinpopMask winpop-mask" id="J_WinpopMask"></div>' + '<div class="J_WinpopBox winpop-box" id="J_WinpopBox">' + '<div class="J_WinpopMain winpop-main"></div>' + '<div class="J_WinpopBtns winpop-btns"></div>' + '</div>',
     alert: '<input type="button" class="J_AltBtn pop-btn alert-button" value="确定">',
     confirm: '<input type="button" class="J_CfmFalse pop-btn confirm-false" value="取消">' + '<input type="button" class="J_CfmTrue pop-btn confirm-true" value="确定">'
   }
 
   function Winpop() {
     var config = {};
     this.get = function(n) {
       return config[n];
     }
 
     this.set = function(n, v) {
       config[n] = v;
     }
     this.init();
   }
 
   Winpop.prototype = {
     init: function() {
       this.createDom();
       this.bindEvent();
     },
     createDom: function() {
       var body = jQuery("body"),
         ovl = jQuery("#J_WinpopBox");
 
       if (ovl.length === 0) {
         body.append(HTMLS.ovl);
       }
 
       this.set("ovl", jQuery("#J_WinpopBox"));
       this.set("mask", jQuery("#J_WinpopMask"));
     },
     bindEvent: function() {
       var _this = this,
         ovl = _this.get("ovl"),
         mask = _this.get("mask");
       ovl.on("click", ".J_AltBtn", function(e) {
         _this.hide();
       });
       ovl.on("click", ".J_CfmTrue", function(e) {
         var cb = _this.get("confirmBack");
         _this.hide();
         cb && cb(true);
       });
       ovl.on("click", ".J_CfmFalse", function(e) {
         var cb = _this.get("confirmBack");
         _this.hide();
         cb && cb(false);
       });
       mask.on("click", function(e) {
         _this.hide();
       });
       jQuery(document).on("keyup", function(e) {
         var kc = e.keyCode,
           cb = _this.get("confirmBack");;
         if (kc === 27) {
           _this.hide();
         } else if (kc === 13) {
           _this.hide();
           if (_this.get("type") === "confirm") {
             cb && cb(true);
           }
         }
       });
     },
     alert: function(str, btnstr) {
       var str = typeof str === 'string' ? str : str.toString(),
         ovl = this.get("ovl");
       this.set("type", "alert");
       ovl.find(".J_WinpopMain").html(str);
       if (typeof btnstr == "undefined") {
         ovl.find(".J_WinpopBtns").html(HTMLS.alert);
       } else {
         ovl.find(".J_WinpopBtns").html(btnstr);
       }
       this.show();
     },
     confirm: function(str, callback) {
       var str = typeof str === 'string' ? str : str.toString(),
         ovl = this.get("ovl");
       this.set("type", "confirm");
       ovl.find(".J_WinpopMain").html(str);
       ovl.find(".J_WinpopBtns").html(HTMLS.confirm);
       this.set("confirmBack", (callback || function() {}));
       this.show();
     },
     show: function() {
       this.get("ovl").show();
       this.get("mask").show();
     },
     hide: function() {
       var ovl = this.get("ovl");
       ovl.find(".J_WinpopMain").html("");
       ovl.find(".J_WinpopBtns").html("");
       ovl.hide();
       this.get("mask").hide();
     },
     destory: function() {
       this.get("ovl").remove();
       this.get("mask").remove();
       delete window.alert;
       delete window.confirm;
     }
   };
 
   var obj = new Winpop();
   window.alert = function(str) {
     obj.alert.call(obj, str);
   };
   window.confirm = function(str, cb) {
     obj.confirm.call(obj, str, cb);
   };
 })(window, jQuery);

然后实例化对象

var obj = new Winpop(); // 创建一个Winpop的实例对象
 // 覆盖alert控件
 window.alert = function(str) {
   obj.alert.call(obj, str);
 };
 // 覆盖confirm控件
 window.confirm = function(str, cb) {
   obj.confirm.call(obj, str, cb);
 };

以下JS不可少

<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="winpop.js"></script>

以上所述就是本文的全部内容了,希望对大家能够有所帮助。

Javascript 相关文章推荐
javascript 数组学习资料收集
Apr 11 Javascript
this和执行上下文实现代码
Jul 01 Javascript
JS小功能(列表页面隔行变色)简单实现
Nov 28 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
Apr 16 Javascript
angularJS 中input示例分享
Feb 09 Javascript
AngularJS入门教程之AngularJS表达式
Apr 18 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
May 19 Javascript
JS实现的随机排序功能算法示例
Jun 09 Javascript
vue利用axios来完成数据的交互
Mar 23 Javascript
ES6与CommonJS中的模块处理的区别
Jun 13 Javascript
重新认识vue之事件阻止冒泡的实现
Aug 02 Javascript
JavaScript中变量提升和函数提升的详解
Aug 07 Javascript
javascript异步处理工作机制详解
Apr 13 #Javascript
JavaScript中DOM详解
Apr 13 #Javascript
js 获取元素在页面上的偏移量的方法汇总
Apr 13 #Javascript
javascript中scrollTop详解
Apr 13 #Javascript
jQuery实现的在线答题功能
Apr 12 #Javascript
jQuery插件bxSlider实现响应式焦点图
Apr 12 #Javascript
jQuery插件Skippr实现焦点图幻灯片特效
Apr 12 #Javascript
You might like
用Zend Encode编写开发PHP程序
2006/10/09 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
php一个找二层目录的小东东
2012/08/02 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
JavaScript中的细节分析
2012/06/30 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
js 实现的可折叠留言板(附源码下载)
2014/07/01 Javascript
node.js中的fs.symlinkSync方法使用说明
2014/12/15 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
vue+iview 兼容IE11浏览器的实现方法
2019/01/07 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
介绍Python中的文档测试模块
2015/04/28 Python
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
python利用正则表达式提取字符串
2016/12/08 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
物流管理毕业生自荐信范文
2014/03/15 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
教师辞职书范文
2015/02/26 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL