1、提示窗口代码
代码是基于Bootstrap实现,需要引用Bootstrap的js和css。代码如下:
function MsgAlert (options) { var deferredObject = $.Deferred(); var defaults = { type: "alert", //alert, prompt,confirm modalSize: 'modal-sm', //modal-sm, modal-lg okButtonText: '确定', cancelButtonText: '取消', yesButtonText: '是', noButtonText: '否', headerText: '提示', messageText: 'Message', alertType: 'default', //default, primary, success, info, warning, danger inputFieldType: 'text', //could ask for number,email,etc } $.extend(defaults, options); var _show = function(){ var headClass = "navbar-default"; switch (defaults.alertType) { case "primary": headClass = "alert-primary"; break; case "success": headClass = "alert-success"; break; case "info": headClass = "alert-info"; break; case "warning": headClass = "alert-warning"; break; case "danger": headClass = "alert-danger"; break; } $('BODY').append( '<div id="MsgAlerts" class="modal fade">' + '<div class="modal-dialog" class="' + defaults.modalSize + '">' + '<div class="modal-content">' + '<div id="MsgAlerts-header" class="modal-header ' + headClass + '">' + '<button id="close-button" type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>' + '<h4 id="MsgAlerts-title" class="modal-title">Modal title</h4>' + '</div>' + '<div id="MsgAlerts-body" class="modal-body">' + '<div id="MsgAlerts-message" ></div>' + '</div>' + '<div id="MsgAlerts-footer" class="modal-footer">' + '</div>' + '</div>' + '</div>' + '</div>' ); $('.modal-header').css({ 'padding': '15px 15px', '-webkit-border-top-left-radius': '5px', '-webkit-border-top-right-radius': '5px', '-moz-border-radius-topleft': '5px', '-moz-border-radius-topright': '5px', 'border-top-left-radius': '5px', 'border-top-right-radius': '5px' }); $('#MsgAlerts-title').text(defaults.headerText); $('#MsgAlerts-message').html(defaults.messageText); var keyb = "false", backd = "static"; var calbackParam = ""; switch (defaults.type) { case 'alert': keyb = "true"; backd = "true"; $('#MsgAlerts-footer').html('<button class="btn btn-' + defaults.alertType + '">' + defaults.okButtonText + '</button>').on('click', ".btn", function () { calbackParam = true; $('#MsgAlerts').modal('hide'); }); break; case 'confirm': var btnhtml = '<button id="ezok-btn" class="btn btn-primary">' + defaults.yesButtonText + '</button>'; if (defaults.noButtonText && defaults.noButtonText.length > 0) { btnhtml += '<button id="ezclose-btn" class="btn btn-default">' + defaults.noButtonText + '</button>'; } $('#MsgAlerts-footer').html(btnhtml).on('click', 'button', function (e) { if (e.target.id === 'ezok-btn') { calbackParam = true; $('#MsgAlerts').modal('hide'); } else if (e.target.id === 'ezclose-btn') { calbackParam = false; $('#MsgAlerts').modal('hide'); } }); break; case 'prompt': $('#MsgAlerts-message').html(defaults.messageText + '<br /><br /><div class="form-group"><input type="' + defaults.inputFieldType + '" class="form-control" id="prompt" /></div>'); $('#MsgAlerts-footer').html('<button class="btn btn-primary">' + defaults.okButtonText + '</button>').on('click', ".btn", function () { calbackParam = $('#prompt').val(); $('#MsgAlerts').modal('hide'); }); break; } $('#MsgAlerts').modal({ show: false, backdrop: backd, keyboard: keyb }).on('hidden.bs.modal', function (e) { $('#MsgAlerts').remove(); deferredObject.resolve(calbackParam); }).on('shown.bs.modal', function (e) { if ($('#prompt').length > 0) { $('#prompt').focus(); } }).modal('show'); } _show(); return deferredObject.promise(); }
2、调用方法
窗口样式有五种类型:default, primary, success, info, warning, danger
1)调用alert窗口
MsgAlert({type:"alert",
messageText: "提示信息内容",
alertType: "info"
}).done(function (e) {
alert(e);
});
2)调用confirm窗口
MsgAlert({type:"confirm",
messageText: "提示信息内容",
alertType: "info"
}).done(function (e) {
alert(e);
});
3、重写浏览器中alert()和confirm()
window.alert = function (message) { MsgAlert({type:"alert", messageText: message, alertType: "info" }).done(function (e) { alert(e); }); } window.confirm = function (message) { MsgAlert({type:"confirm", messageText: message, alertType: "info" }).done(function (e) { alert(e); }); }
如果不用使用Bootstrap方式重写,也可以尝试下面方法解决提示窗口中有关闭网页按钮问题,代码如下:
var wAlert = window.alert; window.alert = function (message) { try { var iframe = document.createElement("IFRAME"); iframe.style.display = "none"; iframe.setAttribute("src", 'data:text/plain,'); document.documentElement.appendChild(iframe); var alertFrame = window.frames[0]; var iwindow = alertFrame.window; if (iwindow == undefined) { iwindow = alertFrame.contentWindow; } iwindow.alert(message); iframe.parentNode.removeChild(iframe); } catch (exc) { return wAlert(message); } } var wConfirm = window.confirm; window.confirm = function (message) { try { var iframe = document.createElement("IFRAME"); iframe.style.display = "none"; iframe.setAttribute("src", 'data:text/plain,'); document.documentElement.appendChild(iframe); var alertFrame = window.frames[0]; var iwindow = alertFrame.window; if (iwindow == undefined) { iwindow = alertFrame.contentWindow; } iwindow.confirm(message); iframe.parentNode.removeChild(iframe); } catch (exc) { return wConfirm(message); } }