您的位置:首页 > Web前端 > JavaScript

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

2014-03-07 11:37 141 查看

插件与系统命令

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


最后运行效果如图



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: