替代alert的消息框和提示框

Posted xueyeduling

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了替代alert的消息框和提示框相关的知识,希望对你有一定的参考价值。

  alert提示框由于外观不太友好,所以一般都不用alert了。

  我在这里使用bootstrap的样式,写了一个可以单独显示消息,也可以确认取消的提示框,确认,取消的采用模式对话框方式,用一个div遮盖了后面所有内容。

  使用的外观如下:

  一:单独显示消息:

  

  二:确认和取消:

  

  单独显示消息的方法传递类型,信息,显示时间以及回掉函数。其中通过重载可以只传递信息。

  确认和取消的方法传递类型,信息以及回掉函数。其中可以通过重载可以只传递信息和确认后执行的回掉函数。如果点击取消就去隐藏该提示框。

  下面是这个提示框的js代码:

  

  1 //success   成功
  2 //info      信息
  3 //warning   警告
  4 //danger    错误!
  5 function alertBox(type, msg, showTime, callBack) {
  6     var divCss = "alert alert-" + type + " alert-dismissable";
  7     if (showTime == null) showTime = 3000;
  8     var divAlertBox;
  9     if ($("#divAlertBox").length != 0) {
 10         $("#divAlertBox span").text(msg);
 11         divAlertBox = $("#divAlertBox");
 12         divAlertBox.removeClass().addClass(divCss).slideDown(1000);
 13         box(divAlertBox);
 14     } else {
 15         divAlertBox = $("<div id=\'divAlertBox\' style=\'display:none;position:fixed;z-index:9999;\' class=\'" + divCss + "\'><button type=\'button\' class=\'close\' data-dismiss=\'alert\' aria-hidden=\'true\'>&times;</button><span>" + msg + "</span></div>");
 16         $("body").append(divAlertBox);
 17         divAlertBox.slideDown(1000);
 18         box(divAlertBox);
 19     }
 20     setTimeout(function () {
 21         divAlertBox.fadeOut(1000);
 22         if (callBack != null) {
 23             callBack();
 24         }
 25     }, showTime);
 26 }
 27 
 28 function alertSuccess(msg, showTime, callBack) {
 29     alertBox("success", msg, showTime, callBack);
 30 }
 31 
 32 function alertInfo(msg, showTime, callBack) {
 33     alertBox("info", msg, showTime, callBack);
 34 }
 35 
 36 function alertWarning(msg, showTime, callBack) {
 37     alertBox("warning", msg, showTime, callBack);
 38 }
 39 
 40 function alertDanger(msg, showTime, callBack) {
 41     alertBox("danger", msg, showTime, callBack);
 42 }
 43 
 44 //必传入回掉函数
 45 function confirmBox(type, msg, callBack) {
 46     var divCss = "alert alert-" + type;
 47     var divConfirmBox;
 48     if ($("#divConfirmBox").length != 0) {
 49         var divConfirmBoxCover = $("#divConfirmBoxCover");
 50         divConfirmBoxCover.show();
 51         $("#divConfirmBox span").text(msg);
 52         divConfirmBox = $("#divConfirmBox");
 53         divConfirmBox.removeClass().addClass(divCss).slideDown(1000);
 54         divConfirmBox.find("button:first")[0].onclick = callBack;
 55         box(divConfirmBox);
 56     } else {
 57         var divConfirmBoxCover = $("<div id=\'divConfirmBoxCover\' style=\'position:fixed;top:0px;left:0px;z-index:9998;width:100%;height:100%;\'><div>");
 58         divConfirmBox = $("<div id=\'divConfirmBox\' style=\'display:none;position:fixed;z-index:9999;\' class=\'" + divCss + "\'><span>" + msg + "</span><br/></div>");
 59         var btnYes = $("<button style=\'margin-top:20px;margin-right:50px;\' type=\'button\' class=\'btn btn-warning\'>确定</button>");
 60         var btnNo = $("<button style=\'margin-top:20px;float:right;\' type=\'button\' class=\'btn btn-primary\'  onclick=\'confirmBoxHide()\'>取消</button>");
 61         btnYes[0].onclick = callBack;
 62         divConfirmBox.append(btnYes).append(btnNo);
 63         $("body").append(divConfirmBox).append(divConfirmBoxCover);
 64         divConfirmBox.slideDown(1000);
 65         box(divConfirmBox);
 66     }
 67 }
 68 
 69 function confirmSuccess(msg, callBack) {
 70     confirmBox("success", msg, callBack);
 71 }
 72 
 73 function confirmInfo(msg, callBack) {
 74     confirmBox("info", msg, callBack);
 75 }
 76 
 77 function confirmWarning(msg, callBack) {
 78     confirmBox("warning", msg, callBack);
 79 }
 80 
 81 function confirmDanger(msg, callBack) {
 82     confirmBox("danger", msg, callBack);
 83 }
 84 
 85 function confirmBoxHide() {
 86     $("#divConfirmBox").fadeOut(1000);
 87     $("#divConfirmBoxCover").hide();
 88 }
 89 
 90 function box(jqObj) {
 91     //获取DIV为‘box’的盒子
 92     var oBox = jqObj[0];
 93     //获取元素自身的宽度
 94     var L1 = oBox.clientWidth;
 95     //获取元素自身的高度
 96     var H1 = oBox.clientHeight;
 97     //获取实际页面的left值。(页面宽度减去元素自身宽度/2)
 98     var Left = (document.documentElement.clientWidth - L1) / 2;
 99     //获取实际页面的top值。(页面宽度减去元素自身高度/2)
100     var top = (document.documentElement.clientHeight - H1) / 4;
101     oBox.style.left = Left + \'px\';
102     oBox.style.top = top + \'px\';
103 }

 

  然后是测试页面的代码,记得引用1.10以上的jQuery和bootstrap.min.css,bootstrap.min.js。

  这里是将上面的JS代码单独放在一个js文件中,然后引用,加了那么多<br/>是为了观看滚动的效果——提示框是否会跟着移动。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>

    <link href="NewFolder1/bootstrap.min.css" rel="stylesheet" />
    <script src="NewFolder1/jquery-1.11.1.min.js"></script>
    <script src="NewFolder1/bootstrap.min.js"></script>
    <script src="javascript1.js"></script>

</head>
<body>
    <input type="button" name="name" value="alertSuccess" onclick="alertSuccess(\'提示信息:成功!\')" />
    <input type="button" name="name" value="alertInfo" onclick="alertInfo(\'提示信息:成功!\')" />
    <input type="button" name="name" value="alertWarning" onclick="alertWarning(\'提示信息:警告!\')" />
    <input type="button" name="name" value="alertDanger" onclick="alertDanger(\'提示信息:危险!\')" />
    <br />
    <input type="button" name="name" value="confirmSuccess" onclick="confirmSuccess(\'提示信息:成功!\', function () { window.location = \'http://www.cnblogs.com/xueyeduling/p/6833034.html\'; })" />
    <input type="button" name="name" value="confirmInfo" onclick="confirmInfo(\'提示信息:成功!\' ,function () { window.location=\'http://www.cnblogs.com/xueyeduling/p/6833034.html\' ; })" />
    <input type="button" name="name" value="confirmWarning" onclick="confirmWarning(\'提示信息:警告!\' ,function () { window.location=\'http://www.cnblogs.com/xueyeduling/p/6833034.html\' ; })" />
    <input type="button" name="name" value="confirmDanger" onclick="confirmDanger(\'提示信息:危险!\' ,function () { window.location=\'http://www.cnblogs.com/xueyeduling/p/6833034.html\' ; })" />
    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
</body>
</html>

 

以上是关于替代alert的消息框和提示框的主要内容,如果未能解决你的问题,请参考以下文章

html中点击click事件后的提示框内容

原生wcPop.js消息提示框(移动端)内含仿微信弹窗效果

Selenium处理alert/confirm/prompt提示框

messager消息提示框

JavaScript 对话框

mui消息框(alert,confirm,prompt,toast)的使用