JS~重写alter与confirm,让它们变成fancybox风格

简介:

插件与系统命令

对于很多JS弹框插件来说,都提供了alter,confirm等功能,如fancybox,Boxy等插件,今天来介绍一下如何将系统的alter和confirm替换成指定插件的alter和confirm,使用替换的方式的好处就是不用修改之前的代码,这在面向对象里,

叫做“对修改关闭,对扩展开放”,也称为OCP原则,即开闭原则。

fancybox替换系统命令,它需要有一个HTML容器来展现弹框

<script id="MessageBox_delete" type="text/html">
    <!--试题删除确认弹出框 start-->
    <div class="r_warnBox" style="width: 276px;">
        <div class="r_warnBox_tit">
            <h3><strong>提示</strong></h3>
        </div>
        <div class="r_roomBoxContDel">
            <p class="alert">您确定删除作业吗?</p>
            <p class="confirm"><a class="sure" href="javascript:;">确定</a><a class="cancel" href="javascript:;" onclick="$.fancybox.close();">取消</a></p>
        </div>
        <a class="r_warnBox_close" href="javascript:;" onclick="$.fancybox.close();"></a>
    </div>
    <!--试题删除确认弹出框 end-->
</script>
<!--弹出框1 start-->
<script id="MessageBox_message" type="text/html">
    <div class='r_warnBox' style='width: 433px; padding-right: 30px;'>
        <div class='r_warnBox_tit'>
            <h3><strong>提示
            </strong></h3>
        </div>
        <div id='alert_message' class='r_roomBoxCont'>
            <p class='alert'>[Content]</p>
        </div>
        <a class='r_warnBox_close' href='javascript:;' onclick="$.fancybox.close()"></a>
    </div>
</script>
<!--弹出框1 end-->

下面是复写语句

 window.alert = function (msg) {
        var reg = new RegExp("\\[([^\\[\\]]*?)\\]", 'igm'); //i g m是指分别用于指定区分大小写的匹配、全局匹配和多行匹配。
        var html = document.getElementById("MessageBox_message").innerHTML;
        var result = html.replace(reg, function (node, key) { return { 'Content': msg }[key]; });
        $.fancybox(result, {
            'padding': 0,
            'scrolling': 'visible',
            'closeBtn': false,
            'modal': false
    });

    }
    window.confirm = function (msg, callBack) {
        $.fancybox($("#MessageBox_delete").html(), {
            'padding': 0,
            'scrolling': 'visible',
            'closeBtn': false,
            'modal': false,
            afterShow: function () {
                $('p.confirm a.sure').on('click', function () {
                    callBack();
                });
            }
        });

    }

下面是调用语句

function alerttest() {
        alert("ok");
    }
    function confirmtest() {
        confirm("are you sure!", function () { alert("删除成功") });
    }

Boxy替换系统命令,使用相对简单,它已经为我们创建的弹框的DIV

window.alert = function (msg) {
  Boxy.alert(msg);
}

window.alert = function (msg,callback) {
  Boxy.confirm(msg,callback);
}

调用和fancybox也是一样的

  function alerttest() {
        alert("ok");
    }
  function confirmtest() {
        confirm("are you sure!", function () { alert("删除成功") });
    }

最后运行效果如图

本文转自博客园张占岭(仓储大叔)的博客,原文链接:JS~重写alter与confirm,让它们变成fancybox风格,如需转载请自行联系原博主。

目录
相关文章
|
6月前
|
JavaScript 前端开发 数据安全/隐私保护
Javascript知识【validation插件重写表单注册校验】
Javascript知识【validation插件重写表单注册校验】
|
6月前
|
JavaScript 前端开发
Javascript知识【jQuery属性操作&案例:重写复选框操作】
Javascript知识【jQuery属性操作&案例:重写复选框操作】
|
6月前
|
JavaScript 前端开发
Javascript知识【案例:重写省市联动&案例:列表左右选择】
Javascript知识【案例:重写省市联动&案例:列表左右选择】
|
8月前
|
JavaScript 前端开发 索引
JavaScript 手写代码 第七期(重写数组方法三) 用于遍历的方法
JavaScript 手写代码 第七期(重写数组方法三) 用于遍历的方法
37 0
|
8月前
|
JavaScript 前端开发 索引
JavaScript 手写代码 第六期(重写数组方法二)不改变原数组的方法
JavaScript 手写代码 第六期(重写数组方法二)不改变原数组的方法
41 0
|
8月前
|
JavaScript 前端开发 索引
JavaScript 手写代码 第五期(重写数组方法一)-可以改变原数组的方法
JavaScript 手写代码 第五期(重写数组方法一)-可以改变原数组的方法
50 0
|
JavaScript 前端开发
JavaScript学习笔记(四),js中的location地址跳转,confirm确认验证、setInterval定时器的使用
JavaScript学习笔记(四),js中的location地址跳转,confirm确认验证、setInterval定时器的使用
190 0
JavaScript学习笔记(四),js中的location地址跳转,confirm确认验证、setInterval定时器的使用
|
JavaScript 前端开发
JavaScript 浏览器交互:alert、prompt 和 confirm
JavaScript 浏览器交互:alert、prompt 和 confirm
319 0
JavaScript 浏览器交互:alert、prompt 和 confirm
|
JavaScript 前端开发
JavaScript的三种弹出提示框(alert、confirm、prompt)
JavaScript的三种弹出提示框(alert、confirm、prompt)
JavaScript的三种弹出提示框(alert、confirm、prompt)
|
JavaScript 前端开发 API
不用Vue你还记得怎么写前端吗?用JS重写🌜黑暗模式掘金首页 | 创作者训练营
大帅早有各种预案,所以不存在翻车(请看头图😁)。最优路径行不通,那就麻烦一点,多掉点头发罢了。
457 0
不用Vue你还记得怎么写前端吗?用JS重写🌜黑暗模式掘金首页 | 创作者训练营