原生js实现简单的弹框插件 (function (window, document) { 'use strict'; var win = window; var doc = document; var utils; function Utils() { this.overlayClass = 'bean-panel'; this.box = null; this.textTemplate = { text: 'It is OK!',
(function (window, document) {
'use strict';
var win = window;
var doc = document;
var utils;
function Utils() {
this.overlayClass = 'bean-panel';
this.box = null;
this.textTemplate = {
text: 'It is OK!',
confirmButtonText: '确定',
confirmButtonColor: '#FF5D3D',
cancelButtonText: '取消',
cancelButtonColor: '#CECECE',
showCancelButton: false
};
}
Utils.prototype = {
// 初始化DOM节点
init: function () {
var temp = '' +
'
' +
'
' +
'
' + this.textTemplate.text + '
' +
'
' + '
' + '
' + '
' +
'
';
return temp;
},
getChild: function (opt) {
var box = document.createElement('div');
var _this = this;
box.className = this.overlayClass;
this.textTemplate.text = opt.text || this.textTemplate.text;
this.textTemplate.confirmButtonText = opt.confirmButtonText ||
this.textTemplate.confirmButtonText;
this.textTemplate.cancelButtonText = opt.cancelButtonText ||
this.textTemplate.cancelButtonText;
this.textTemplate.cancelButtonColor = opt.cancelButtonColor ||
this.textTemplate.cancelButtonColor;
box.innerHTML = this.init();
this.box = box;
document.body.appendChild(this.box);
},
alert: function (opt) {
var btns = null;
var _this = this;
this.getChild(opt);
btns = doc.getElementsByClassName('btn-footer-ok');
if (opt.showCancelButton) {
btns[0].style.display = 'inline-block';
btns[0].style.marginRight = '.2rem';
btns[0].onclick = function () {
if (opt.onCancel) {
opt.onCancel();
}
_this.removeBox();
};
} else {
btns[0].style.display = 'none';
btns[1].style.width = '4.8rem';
}
btns[1].onclick = function () {
if (opt.onConfirm) {
opt.onConfirm();
}
_this.removeBox();
};
},
extend: function (a, b) {
var az = a;
Object.keys(b).forEach(function (key) {
az[key] = b[key];
});
return az;
},
removeBox: function () {
var box = document.getElementsByClassName(this.overlayClass);
document.body.removeChild(box[box.length - 1]);
}
};
utils = new Utils();
function BeanAlert(obj, callback) {
var pars = obj || utils.textTemplate;
if (callback) {
pars.onConfirm = callback;
}
if (this instanceof BeanAlert) {
this.params = pars;
} else {
utils.alert(pars);
}
}
BeanAlert.prototype.show = function () {
utils.alert(this.params);
};
if (typeof exports === 'object') {
module.exports = BeanAlert;
} else {
win.beanAlert = BeanAlert;
}
}(window, document));
