/**************************************** @Name:layer v1.0 弹层组件移动版 @Author:贤心 @Date:2014-08-24 @Copyright:Sentsin Xu(贤心) @官网:http://sentsin.com/layui/layer @License:MIT */ ;!function(win){ "use strict"; var path = '' //所在路径,如果非模块加载不用配置 ? path : document.scripts[document.scripts.length-1].src.match(/[\s\S]*\//)[0]; var doc = document, elem = 'createElement', byid = 'getElementById', claname = 'getElementsByClassName'; document.head.appendChild((function(){ var link = doc[elem]('link'); link.href = path + 'need/layer.css'; link.type="text/css"; link.rel="styleSheet" link.id = 'layermcss'; return link; }())); var config = { shade: true, shadeClose: true, fixed: true }; var ready = { extend: function(obj){ var newobj = JSON.parse(JSON.stringify(config)); for(var i in obj){ newobj[i] = obj[i]; } return newobj; }, timer: {} }; var index = 0, classs = ['layermbox']; function Layer(options){ var that = this; that.config = ready.extend(options); that.view(); }; Layer.prototype.view = function(){ var that = this, config = that.config, layerbox = doc[elem]('div'); that.id = layerbox.id = classs[0] + index; layerbox.setAttribute('class', classs[0] + ' ' + classs[0]+(config.type || 0)); layerbox.setAttribute('index', index); var title = (function(){ var titype = typeof config.title === 'object'; return config.title ? '

'+ (titype ? config.title[0] : config.title) +'

' : ''; }()); var button = (function(){ var btns = (config.btn || []).length, btndom; if(btns === 0 || !config.btn){ return ''; } btndom = ''+ config.btn[0] +'' if(btns === 2){ btndom = ''+ config.btn[1] +'' + btndom; } return '
'+ btndom + '
'; }()); if(!config.fixed){ config.top = config.hasOwnProperty('top') ? config.top : 100; config.style = config.style || ''; config.style += ' top:'+ ( doc.body.scrollTop + config.top) + 'px'; } layerbox.innerHTML = (config.shade ? '
' : '') +'
' +'
' +'
' + title +'
'+ (config.content||' ') +'
' + button +'
' +'
' +'
'; if(!config.type){ var dialogs = doc[claname](classs[0]+'0'), dialen = dialogs.length; if(dialen >= 1){ layer.close(dialogs[0].getAttribute('index')) } } document.body.appendChild(layerbox); setTimeout(function(){ try{ doc[byid](that.id).classList.add('layermshow'); }catch(e){ return; } config.success && config.success(doc[byid](that.id)); }, 1); that.index = index++; that.action(config); }; Layer.prototype.action = function(config){ var that = this; //自动关闭 if(config.time){ ready.timer[that.index] = setTimeout(function(){ layer.close(that.index); }, config.time*1000); } //关闭按钮 if(config.title){ doc[byid](that.id)[claname]('layermend')[0].onclick = function(){ config.cancel && config.cancel(); layer.close(that.index, config.end); }; } //确认取消 if(config.btn){ doc[byid](that.id)[claname]('layermbtn')[0].onclick = function(event){ var type = event.target.getAttribute('type'); if(type == 0){ config.no && config.no(); layer.close(that.index, config.end); } else { config.yes ? config.yes(that.index) : layer.close(that.index, config.end); } }; } //点遮罩关闭 if(config.shade && config.shadeClose){ var shade = doc[byid](that.id)[claname]('laymshade')[0]; shade.onclick = function(){ layer.close(that.index, config.end); }; shade.ontouchmove = function(){ layer.close(that.index, config.end); }; } }; var layer = { v: '1.0', index: index, //核心方法 open: function(options){ var o = new Layer(options || {}); return o.index; }, close: function(index, callback){ var ibox = doc[byid](classs[0]+index); if(!ibox) return; ibox.innerHTML = ''; doc.body.removeChild(ibox); clearTimeout(ready.timer[index]); delete ready.timer[index]; callback && callback(); }, //关闭所有layer层 closeAll: function(){ var boxs = document.getElementsByClassName(classs[0]); for(var i = 0, len = boxs.length; i < len; i++){ layer.close(boxs[i].getAttribute('index')); } } }; "function" === typeof define ? define(function() { return layer; }) : win.layer = layer; }(window);