文章出處
文章列表
插件與系統命令
對于很多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("刪除成功") }); }
最后運行效果如圖
文章列表
全站熱搜