qiaowei | f044a74 | 2019-07-10 16:04:20 +0800 | [diff] [blame^] | 1 | /** |
| 2 | * aui-skin.js |
| 3 | * @author 流浪男 |
| 4 | * @todo more things to abstract, e.g. Loading css etc. |
| 5 | * Licensed under the MIT license. |
| 6 | * http://www.opensource.org/licenses/mit-license.php |
| 7 | */ |
| 8 | (function( window, undefined ) { |
| 9 | "use strict"; |
| 10 | var auiSkin = function(params) { |
| 11 | this.extend(this.params, params); |
| 12 | this._init(); |
| 13 | }; |
| 14 | var fileRef; |
| 15 | auiSkin.prototype = { |
| 16 | params: { |
| 17 | name: "", //主题名字 |
| 18 | skinPath: "",//主题路径 |
| 19 | default: false, //默认是否立即使用 |
| 20 | beginTime: "",//开始时间 |
| 21 | endTime: ""//结束时间 |
| 22 | }, |
| 23 | _init: function() { |
| 24 | var self = this; |
| 25 | if(!self.params.name)return; |
| 26 | if(!self.params.skinPath)return; |
| 27 | fileRef = document.createElement('link'); |
| 28 | fileRef.setAttribute("rel","stylesheet"); |
| 29 | fileRef.setAttribute("type","text/css"); |
| 30 | fileRef.setAttribute("aui-skin-name",self.params.name); |
| 31 | fileRef.setAttribute("href",self.params.skinPath); |
| 32 | if(self.params.default){ |
| 33 | document.getElementsByTagName("head")[0].appendChild(fileRef); |
| 34 | }else{ |
| 35 | if(!self.params.beginTime || !self.params.endTime)return; |
| 36 | if(!self.check(self.params.beginTime,self.params.endTime))return; |
| 37 | var _date = new Date(); |
| 38 | if(_date.getMinutes() < 10){ |
| 39 | var nowM = "0"+_date.getMinutes(); |
| 40 | }else{ |
| 41 | var nowM = _date.getMinutes(); |
| 42 | } |
| 43 | var nowTime = _date.getHours()+":"+nowM; |
| 44 | var b = parseInt(self.params.beginTime.replace(":", '')); |
| 45 | var e = parseInt(self.params.endTime.replace(":", '')); |
| 46 | var n = parseInt(nowTime.replace(":", '')); |
| 47 | if(b > e){ |
| 48 | if(n >= b || n <= e)self.setSkin(); |
| 49 | }else if(b < e){ |
| 50 | if(n >= b && n <= e)self.setSkin(); |
| 51 | }else{ |
| 52 | self.removeSkin(); |
| 53 | } |
| 54 | } |
| 55 | }, |
| 56 | setSkin:function(){ |
| 57 | document.getElementsByTagName("head")[0].appendChild(fileRef); |
| 58 | }, |
| 59 | removeSkin:function(){ |
| 60 | var self = this; |
| 61 | if(document.querySelector("link[aui-skin-name='"+self.params.name+"']")) |
| 62 | document.querySelector("link[aui-skin-name='"+self.params.name+"']").parentNode.removeChild(document.querySelector("link[aui-skin-name='"+self.params.name+"']")); |
| 63 | }, |
| 64 | check:function(beginTime,endTime){ |
| 65 | var strb = beginTime.split (":"); |
| 66 | if (strb.length != 2)return false; |
| 67 | var stre = endTime.split (":"); |
| 68 | if (stre.length != 2)return false; |
| 69 | var b = new Date (); |
| 70 | var e = new Date (); |
| 71 | b.setHours (strb[0]); |
| 72 | b.setMinutes (strb[1]); |
| 73 | e.setHours (stre[0]); |
| 74 | e.setMinutes (stre[1]); |
| 75 | if(strb[0] > 24 || strb[0] < 0 || stre[0] > 24 || stre[0] < 0)return false; |
| 76 | if(strb[1] > 59 || strb[1] < 0 || stre[1] > 59 || stre[1] < 0)return false; |
| 77 | return true; |
| 78 | }, |
| 79 | extend: function(a, b) { |
| 80 | for (var key in b) { |
| 81 | if (b.hasOwnProperty(key)) { |
| 82 | a[key] = b[key]; |
| 83 | } |
| 84 | } |
| 85 | return a; |
| 86 | } |
| 87 | }; |
| 88 | window.auiSkin = auiSkin; |
| 89 | })(window); |