PageSourceSearch

https://hwshu.com/resources/common/js/mgutil.js

js hwshu.com collected 2026-10-06 10:17:48 UTC 17,629 bytes, 632 lines download raw bytes

1/**
2 * 公共JS文件
3 */
4var MGUtil = {
5	basePath : "",
6	userId : 0,
7	maxFileSize : 104857600,
8	maxFileName : 50,
9	checkReadRight : function(bookIdEncrypted) {//检查用户是否拥有阅读权限
10		var success = false,
11			url = app + '/front/reader/checkReadRight/'+bookIdEncrypted+'.do';
12		MGUtil.ajax(url,{},function(data){
13			success = true;
14		},false,true);
15		return success;
16	},
17	ajax : function(url,options,callback,ignoreError,sync){
18		var config = {};
19		if(options && options.config){
20			config = options.config;
21			delete options.config;
22		}
23		return $.ajax({
24		    type: 'POST',
25		    url: url ,
26		    async : !sync,//默认为异步ajax
27		    data:options,
28		    beforeSend : config.beforeSend? config.beforeSend : null,
29		    success: function(data){
30		    	if(!ignoreError){//ignoreError为false
31		    		if(!data){//未登录的情况
32		    			return;
33		    		}
34		    		if(data.error){//出错的情况
35		    			layer.alert(data.message);return;
36		    		}
37		    	}
38		    	if(callback){
39		    		callback(data);
40		    	}
41		    } ,
42		    dataType: 'json'
43		});
44	},
45	alert : function(message,options){
46		var tempIndex = layer.alert(message);
47		if(options && options.autoHide){
48			setTimeout(function(){
49				layer.close(tempIndex);
50			},1000);
51		}
52	},
53	ajaxForm : function(url,formId,callback,ignoreError){
54		var options ={   
55	            url: url,   
56	            type:'post',                    
57	            data:null,
58	            dataType:'json',
59	            success:function(data){
60			    	if(!ignoreError){//ignoreError为false
61			    		if(!data){//未登录的情况
62			    			return;
63			    		}
64			    		if(data.error){//出错的情况
65			    			layer.alert(data.message);return;
66			    		}
67			    	}
68			    	if(callback){
69			    		callback(data);
70			    	}
71			    }   
72	         };
73	      var form =$("#"+formId);
74	    	   
75	      form.ajaxSubmit(options); 
76	},
77	submitByForm : function(url,params,newPage){
78		$('#tempForm').remove();
79		var form = $("<form action='"+url+"' method='post' id='tempForm' "+(newPage?"target='_blank'":"")+"></form>").appendTo($('body'));
80		for(var param in params){
81			form.append("<input type='hidden' name='"+param+"' value='"+params[param]+"'/>");
82		}
83		form.submit();
84	},
85	objSize : function (o) {
86		if(o==undefined||o==null){
87			return 0;
88		}
89		if(typeof o == 'object'){
90			var c = 0; 
91			for(i in o)c++;
92			return c;
93		}else{
94			return o.length;
95		}
96	},
97	isEmail:function (value) {  
98		var pattern = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
99	    if (!pattern.test(value)) {  
100	        return false;
101	    }  
102	    return true; 
103	},
104	isArray : function (o) {
105		return Object.prototype.toString.apply(o) === '[object Array]';
106	},
107	isEmpty : function (o) {
108		if(o==undefined||o==null){
109			return true;
110		}
111		if(typeof o == 'string'){
112			return o.length==0;
113		}else if(typeof o == 'object'){
114			for(i in o){
115				if(!MGUtil.isArray(o) || typeof i != 'string' || typeof o[i] != 'function' ){
116					return false;
117				}
118			}
119			return true;
120		}else{
121			return false;
122		}
123	},
124	isDigits : function (o) {
125		return (typeof o == 'string') && o.length>0 && !isNaN(o);
126	},
127	startWith : function (s1,s2) {
128		if(MGUtil.isEmpty(s1)||MGUtil.isEmpty(s2)||s1.length<s2.length){ 
129			return false;
130		}
131		return s1.substr(0,s2.length)==s2;
132	},
133	endWith : function (s1,s2) {  
134	    if(s1.length<s2.length) return false;  
135	    if(s1==s2)return   true;  
136	    if(s1.substring(s1.length-s2.length)==s2)return true;  
137	    return false;  
138	},
139	contains : function (objs,o) {
140		for(var i=0;i<objs.length;i++){
141			if(objs[i]==o){
142				return true;
143			}
144		}
145		return false;
146	},
147	random : function () {
148		return parseInt(Math.random()*100000);
149	},
150	rid : function () {
151		return 'mg'+MGUtil.random()+MGUtil.random();
152	},
153	generateId : function (dfId) {
154		if(MGUtil.isEmpty(dfId)){
155			return MGUtil.rid();
156		}
157		return dfId;
158	},
159	replaceAll  : function(s,s1,s2){   
160		if(!MGUtil.isEmpty(s)){
161			return s.replace(new RegExp(s1,"gm"),s2);   
162		}else{
163			return s;
164		}
165	},  
166	isChildOf : function(a,b){
167	    return (a.parents(b).length > 0);
168	},
169	loadPage : function (url){
170    	window.location.href = url;
171    },
172    openPage : function (url) {
173    	var w=window.open('about:blank');
174    	w.location.href = url;
175	},
176    href : window.location.href,
177    getBasePath : function () {
178    	var h = MGUtil.href;
179    	var r = h.substring(7);
180		return 'http://'+r.substring(0,r.indexOf('/')+1);
181	},
182    getRootPath : function () {
183    	return MGUtil.basePath;
184	},
185    getUri : function () {
186    	var h = MGUtil.href;
187    	var u = h.substring(h.lastIndexOf("/")+1);
188    	return u;
189	},
190	getQueryParam : function (n) {
191		var reg = new RegExp("(^|&)" + n + "=([^&]*)(&|$)", "i");
192	    var r = window.location.search.substr(1).match(reg);
193	    if (r != null) return unescape(r[2]); return null;
194	},
195	getAction : function () {
196		var u = MGUtil.getUri();
197		var a = u.substring(0,u.lastIndexOf("."));
198		return a;
199	},
200	getActionParam : function () {
201		var a = MGUtil.getAction();
202		return a.substring(a.lastIndexOf("-")+1);
203	},
204	getActionNameSpace : function(){
205		var a = MGUtil.href;
206		var nn = a.substring(0,a.lastIndexOf("/"));
207		return nn.substring(nn.lastIndexOf("/"));
208	},
209	getQueryString : function () {
210		var h = MGUtil.href;
211		var i = h.lastIndexOf("?");
212		return i>=0 ? h.substring(i+1):'';
213	},
214	getAnchorParam : function () {
215		var h = MGUtil.href;
216		var i = h.lastIndexOf("#");
217		return i>=0 ? h.substring(i+1):'';
218	},
219    refresh: function () {
220		MGUtil.loadPage(MGUtil.getAction()+".action");
221	},
222	isie6 : function () {
223		return $.browser.msie && ($.browser.version == "6.0") && !($.support && $.support.style);
224	},
225	//是否支持html5
226	issh5 : function () {
227		if($.browser.msie&&parseInt($.browser.version)<10){
228			return false;
229		}
230		return true;
231	},
232	inputFocus : function (e,value) {
233		if(typeof e == "string"){
234			e = $("#"+e);
235		}
236		if(e.val()==value){
237			e.val("");
238		}
239	},
240	inputBlur : function (e,value) {
241		if(typeof e == "string"){
242			e = $("#"+e);
243		}
244		if($.trim(e.val())==""){
245			e.val(value);
246		}
247	},
248	syncBtn : function (btn,t) {
249		if(MGUtil.isEmpty(t)){
250			t = 1000;
251		}
252		if(btn.attr("working")!="true"){
253			btn.attr("working","true");  
254			setTimeout(function () {
255				btn.attr("working","false");  
256			},t);
257			return true;
258		}
259		return false;
260	},
261	min : function(s1,s2){
262		if(!MGUtil.isEmpty(s1)&&!MGUtil.isEmpty(s2)){
263			return s1>s2?s2:s1;
264		}else if(!MGUtil.isEmpty(s1)){
265			return s1;
266		}else{
267			return s2;
268		}
269	},
270	clearNan : function (e) {
271		if($.trim(e.val()).length>0){
272			if(isNaN(e.val())){
273				e.val("");
274				return false;
275			}
276		}
277		return true;
278	},
279	ftTip : function(s){
280		if(MGUtil.isEmpty(s)){
281			return '';
282		}else{
283			return s.replace(/<br\/>/g,'\n');
284		}
285	},
286	ftList : function (s) {
287		if(MGUtil.isEmpty(s)){
288			return '';
289		}else{
290			return s.replace(/<br\/>/g,' ');
291		}
292	},
293	ftEspList : function (s) {
294		if(MGUtil.isEmpty(s)){
295			return '';
296		}else{
297			return MGUtil.replaceAll(s,'&lt;br/&gt;',' ');
298		}
299	},
300	getFileExt : function (n) {
301		return n!=undefined&&n.indexOf('.')>=0?n.substring(n.lastIndexOf(".")+1):'';
302	},
303	escapeHtml : function (s) {
304		if(MGUtil.isEmpty(s)){
305			return s;
306		}
307		return s.replace(/&/g,'&amp;')
308		.replace(/\'/g,'&apos;')
309		.replace(/\"/g,'&quot;')
310		.replace(/\t/g,'&nbsp;&nbsp;')
311		.replace(/</g,'&lt;')
312		.replace(/>/g,'&gt;');
313	},
314	unescapeHtml : function (s) {
315		if(MGUtil.isEmpty(s)){
316			return s;
317		}
318		return s.replace(/&apos;/g,'\'')
319		.replace(/&quot;/g,'\"')
320		.replace(/&nbsp;/g,' ')
321		.replace(/&lt;/g,'<')
322		.replace(/&gt;/g,'>')
323		.replace(/&amp;/g,'&');
324	},
325	tipHtml : function (s) {
326		if(MGUtil.isEmpty(s)){
327			return s;
328		}
329		return MGUtil.unescapeHtml(s).replace(/<br\/>/g,'\n');
330	},
331	mv2ctr : function (o) {
332		//获得当前IE窗口可视区域中心点
333		var x=$(window).width()/2;
334		var y=$(window).height()/2;
335		//获得div的宽度一半,高度一半
336		var div_w=o.width()/2;
337		var div_h=o.height()/2;
338		//获得滚动条偏移量
339		var stop=$("body").scrollTop();
340		var sleft=$("body").scrollLeft();
341		//获得最终div显示位置
342		var left=x-div_w+sleft+"px";
343		var top=y-div_h+stop+"px";
344		//设置 div 样式
345		o.css({left:left,top:top});
346	},
347	cboxFixer : false,
348	resizeTimer : null,
349	windowWidth : 0,
350	s2o : function(s){ 
351	    return eval('('+s+')'); 
352	},
353	clickDom : function (dom){
354		if(!dom){
355			return;
356		}
357		if (/msie/i.test(navigator.userAgent)){ //ie brower  
358			dom.click();  
359		}else{  
360		   var e = document.createEvent('MouseEvent');     
361		   e.initEvent('click', false, false);     
362		   setTimeout(dom.dispatchEvent(e),2000);     
363		}
364	},
365	o2s : function(obj) {
366		switch (typeof(obj)) {
367			case 'string' :
368				return '"' + obj.replace(/(["\\])/g, '\\$1') + '"';
369			case 'array' :
370				return '[' + obj.map(MGUtil.o2s).join(',') + ']';
371			case 'object' :
372				if (obj instanceof Array) {
373					var strArr = [];
374					var len = obj.length;
375					for (var i = 0; i < len; i++) {
376						strArr.push(MGUtil.o2s(obj[i]));
377					}
378					return '[' + strArr.join(',') + ']';
379				} else if (obj == null) {
380					return 'null';
381				} else {
382					var string = [];
383					for (var property in obj) {
384						string.push(MGUtil.o2s(property) + ':' + MGUtil.o2s(obj[property]));
385					}
386					return '{' + string.join(',') + '}';
387				}
388			case 'number' :
389				return obj;
390			case false :
391				return obj;
392		}
393		return obj;
394	},
395	/**
396	 * 
397	 * @param {Object}
398	 *            va1
399	 * @param {Object}
400	 *            val2
401	 * @return val的时间晚于val2,则返回1, val的时间早于val2 返回-1 val的时间等于val2 返回0
402	 */
403   compareDate : function(va1,val2){
404	   if(Date.parse(va1)- Date.parse(val2) > 0){
405		   return 1;
406	   }else if(Date.parse(va1)- Date.parse(val2) < 0){
407		    return -1;
408	   }else{
409		   return 0;
410	   }
411	 },
412	 /**
413	  * 格式化日期
414	  * 传入date 返回 2014-12-01 20:01:32
415	  */
416	 formatDate : function(date){
417		return this.datePad(date.getYear())+"-"+this.datePad(date.getMonth())+"-"+this.datePad(date.getDay());
418	 },
419	 /**
420	  * 格式化日期时间
421	  * 传入date 返回 2014-12-01 20:01:32
422	  */
423	 formatTime : function(date){
424		return this.datePad(date.getYear())+"-"+this.datePad(date.getMonth())+"-"+this.datePad(date.getDay())+" "+this.datePad(date.getHours())+":"+this.datePad(date.getMinutes())+":"+this.datePad(date.getSeconds());
425	 },
426	 /**
427	  * 左边补零 
428	  * 传入6 返回 06
429	  * 传入12 返回12
430	  */
431	 datePad : function (str) {
432		 var i = parseInt(str);
433		 if(i && i>=0 && i<=9){
434			 return '0'+str;
435		 }else{
436			 return str;
437		 }
438	 },
439	/**
440	 *  设置cookie的值 $.cookie(’the_cookie’, ‘the_value’);		
441	 *  新建一个cookie 包括有效期 路径 域名等	 $.cookie(’the_cookie’, ‘the_value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true});
442	 *  新建cookie $.cookie(’the_cookie’, ‘the_value’);
443	 *  删除一个cookie $.cookie(’the_cookie’, null);
444	 */
445	cookie : function(name, value, options) { 
446	    if (typeof value != 'undefined') { // name and value given, set cookie 
447	        options = options || {}; 
448	        if (value === null) { 
449	            value = ''; 
450	            options.expires = -1; 
451	        } 
452	        var expires = ''; 
453	        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { 
454	            var date; 
455	            if (typeof options.expires == 'number') { 
456	                date = new Date(); 
457	                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); 
458	            } else { 
459	                date = options.expires; 
460	            } 
461	            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE 
462	        } 
463	        var path = options.path ? '; path=' + options.path : ''; 
464	        var domain = options.domain ? '; domain=' + options.domain : ''; 
465	        var secure = options.secure ? '; secure' : ''; 
466	        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); 
467	    } else { // only name given, get cookie 
468	        var cookieValue = null; 
469	        if (document.cookie && document.cookie != '') { 
470	            var cookies = document.cookie.split(';'); 
471	            for (var i = 0; i < cookies.length; i++) { 
472	                var cookie = jQuery.trim(cookies[i]); 
473	                // Does this cookie string begin with the name we want? 
474	                if (cookie.substring(0, name.length + 1) == (name + '=')) { 
475	                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
476	                    break; 
477	                } 
478	            } 
479	        } 
480	        return cookieValue; 
481	    } 
482	}
483};
484
485//扩展Date的format方法 
486Date.prototype.format = function (format) {
487    var o = {
488        "M+": this.getMonth() + 1,
489        "d+": this.getDate(),
490        "h+": this.getHours(),
491        "m+": this.getMinutes(),
492        "s+": this.getSeconds(),
493        "q+": Math.floor((this.getMonth() + 3) / 3),
494        "S": this.getMilliseconds()
495    }
496    if (/(y+)/.test(format)) {
497        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
498    }
499    for (var k in o) {
500        if (new RegExp("(" + k + ")").test(format)) {
501            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
502        }
503    }
504    return format;
505}
506/**  
507*转换日期对象为日期字符串  
508* @param date 日期对象  
509* @param isFull 是否为完整的日期数据,  
510*               为true时, 格式如"2000-03-05 01:05:04"  
511*               为false时, 格式如 "2000-03-05"  
512* @return 符合要求的日期字符串  
513*/  
514function getSmpFormatDate(date, isFull) {
515    var pattern = "";
516    if (isFull == true || isFull == undefined) {
517        pattern = "yyyy-MM-dd hh:mm:ss";
518    } else {
519        pattern = "yyyy-MM-dd";
520    }
521    return getFormatDate(date, pattern);
522}
523/**  
524*转换当前日期对象为日期字符串  
525* @param date 日期对象  
526* @param isFull 是否为完整的日期数据,  
527*               为true时, 格式如"2000-03-05 01:05:04"  
528*               为false时, 格式如 "2000-03-05"  
529* @return 符合要求的日期字符串  
530*/  
531
532function getSmpFormatNowDate(isFull) {
533    return getSmpFormatDate(new Date(), isFull);
534}
535/**  
536*转换long值为日期字符串  
537* @param l long值  
538* @param isFull 是否为完整的日期数据,  
539*               为true时, 格式如"2000-03-05 01:05:04"  
540*               为false时, 格式如 "2000-03-05"  
541* @return 符合要求的日期字符串  
542*/  
543
544function getSmpFormatDateByLong(l, isFull) {
545    return getSmpFormatDate(new Date(l), isFull);
546}
547/**  
548*转换long值为日期字符串  
549* @param l long值  
550* @param pattern 格式字符串,例如:yyyy-MM-dd hh:mm:ss  
551* @return 符合要求的日期字符串  
552*/  
553
554function getFormatDateByLong(l, pattern) {
555    return getFormatDate(new Date(l), pattern);
556}
557/**  
558*转换日期对象为日期字符串  
559* @param l long值  
560* @param pattern 格式字符串,例如:yyyy-MM-dd hh:mm:ss  
561* @return 符合要求的日期字符串  
562*/  
563function getFormatDate(date, pattern) {
564    if (date == undefined) {
565        date = new Date();
566    }
567    if (pattern == undefined) {
568        pattern = "yyyy-MM-dd hh:mm:ss";
569    }
570    return date.format(pattern);
571}
572
573
574/**
575 * 全局插件
576 */
577jQuery.fn.vtl = function (v) {
578	return this.val(v).attr('title',v);
579};
580jQuery.fn.zIndex = function( zIndex ) { 
581    if ( zIndex !== undefined ) { 
582        return this.css( "zIndex", zIndex ); 
583    } 
584    if ( this.length ) { 
585        var elem = $( this[ 0 ] ), position, value; 
586        while ( elem.length && elem[ 0 ] !== document ) { 
587            position = elem.css( "position" ); 
588            if ( position === "absolute" || position === "relative" || position === "fixed" ) { 
589                value = parseInt( elem.css( "zIndex" ), 10 ); 
590                if ( !isNaN( value ) && value !== 0 ) { 
591                    return value; 
592                } 
593            } 
594            elem = elem.parent(); 
595        } 
596    } 
597    return 0; 
598};
599/**生成全球唯一ID*/
600(function() {
601	// Private array of chars to use   
602	var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
603
604	Math.uuid = function(len, radix) {
605		var chars = CHARS, uuid = [], i;
606		radix = radix || chars.length;
607
608		if (len) {
609			// Compact form   
610			for (i = 0; i < len; i++)
611				uuid[i] = chars[0 | Math.random() * radix];
612		} else {
613			// rfc4122, version 4 form   
614			var r;
615
616			// rfc4122 requires these characters   
617			uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
618			uuid[14] = '4';
619
620			// Fill in random data.  At i==19 set the high bits of clock sequence as   
621			// per rfc4122, sec. 4.1.5   
622			for (i = 0; i < 36; i++) {
623				if (!uuid[i]) {
624					r = 0 | Math.random() * 16;
625					uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
626				}
627			}
628		}
629
630		return uuid.join('');
631	};
632})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.