文章出處

插件與系統命令

對于很多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("刪除成功") });
    }

最后運行效果如圖


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()