PageSourceSearch

https://cache.hinabian.com/js/require/base/hnb.common.js?v=2024092411385123

js hinabian.com collected 2026-10-08 13:28:31 UTC 10,129 bytes, 320 lines download raw bytes

1;(function(global , Hnb){
2	
3	/**
4	 * 检查身份证号码
5	 * yanwenqi 全球购新增身份证号
6	 * @param idCard
7	 * @returns {Boolean}
8	 */
9	function check_idCard(idCard) {
10		idCard = $.trim(idCard.replace(/ /g, "")); //去掉字符串头尾空格
11		if (idCard.length == 15) {
12
13			return isValidityBrithBy15IdCard(idCard); //进行15位身份证的验证
14		} else if (idCard.length == 18) {
15
16			var a_idCard = idCard.split(""); // 得到身份证数组
17
18			if (isValidityBrithBy18IdCard(idCard) && isTrueValidateCodeBy18IdCard(a_idCard)) { //进行18位身份证的基本验证和第18位的验证
19
20				return true;
21			} else {
22
23				return false;
24			}
25		} else {
26
27			return isValidityGAT(idCard);
28		}
29	}
30
31	/**
32	 * 判断身份证号码为18位时最后的验证位是否正确
33	 * @param a_idCard 身份证号码数组
34	 * @return
35	 */
36	function isTrueValidateCodeBy18IdCard(a_idCard) {
37		var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]; // 加权因子
38		var ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]; // 身份证验证位值.10代表X
39		var sum = 0; // 声明加权求和变量
40		if (a_idCard[17].toLowerCase() == 'x') {
41			a_idCard[17] = 10; // 将最后位为x的验证码替换为10方便后续操作
42		}
43
44		for (var i = 0; i < 17; i++) {
45			sum += Wi[i] * a_idCard[i]; // 加权求和
46		}
47
48		valCodePosition = sum % 11; // 得到验证码所位置
49
50		if (a_idCard[17] == ValideCode[valCodePosition]) {
51
52			return true;
53		} else {
54
55			return false;
56		}
57	}
58	/**
59	 * 验证18位数身份证号码中的生日是否是有效生日
60	 * @param idCard 18位书身份证字符串
61	 * @return
62	 */
63	function isValidityBrithBy18IdCard(idCard18) {
64
65		var year = idCard18.substring(6, 10);
66		var month = idCard18.substring(10, 12);
67		var day = idCard18.substring(12, 14);
68		var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));
69		// 这里用getFullYear()获取年份,避免千年虫问题
70		if (temp_date.getFullYear() != parseFloat(year)
71			 || temp_date.getMonth() != parseFloat(month) - 1
72			 || temp_date.getDate() != parseFloat(day)) {
73
74			return false;
75		} else {
76
77			return true;
78		}
79	}
80	/**
81	 * 验证15位数身份证号码中的生日是否是有效生日
82	 * @param idCard15 15位书身份证字符串
83	 * @return
84	 */
85	function isValidityBrithBy15IdCard(idCard15) {
86		var year = idCard15.substring(6, 8);
87		var month = idCard15.substring(8, 10);
88		var day = idCard15.substring(10, 12);
89		var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));
90		// 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法
91		if (temp_date.getYear() != parseFloat(year)
92			 || temp_date.getMonth() != parseFloat(month) - 1
93			 || temp_date.getDate() != parseFloat(day)) {
94			return false;
95		} else {
96			return true;
97		}
98	}
99
100	/*
101	* 港澳台身份证校验
102	*/
103	function isValidityGAT(idCard){
104		var hkRule = /[A-Z]{1,2}[0-9]{6}([0-9A])/;
105		var moRule = /[157][0-9]{6}([0-9])/;
106		var twRule = /[A-Z][0-9]{9}/;
107		if(hkRule.test(idCard) || moRule.test(idCard) || twRule.test(idCard)){
108			return true;
109		}else{
110			return false;
111		}
112	}
113	
114	Hnb.common = {
115		getUrlParam: function(key , url)
116		{
117			var reg = RegExp("(\\?|#|&)" + key + "=([^&#]*)(&|#|$)");
118			url = url || location.href;
119			var arr_temp = url.match(reg);
120			return arr_temp && arr_temp.length >= 2 ? arr_temp[2] : "";
121		},
122		filterXss: function(str_text)
123		{
124			return str_text.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\"/g, "&quot;").replace(/\'/g, "&apos;")
125		},
126		one: function(func)
127		{
128			var isTrue = false;
129			return function(){
130				if(isTrue)
131				{
132					return this;
133				}
134				isTrue = true;
135				return func.apply(this , Array.prototype.slice.call(arguments, 0));
136			}
137		},
138		ajaxPost: function(url , json_param)
139		{
140			var defer = $.Deferred();
141			$.ajax({
142				url: url,
143				data: json_param,
144				type: 'POST',
145				dataType: 'json',
146				xhrFields: {
147                    withCredentials: true
148				},
149				success: function(json_msg)
150				{
151					defer.resolve(json_msg);			
152				},
153				error: function(error)
154				{
155					defer.resolve({
156						state: 200302 , 
157						data: '无网络,请稍后重试'
158					});
159				}
160			});
161			return defer;
162		},
163		handleRemoteData: function($defer , $successMsg , $errMsg)
164		{
165			var defer = $.Deferred();
166			$successMsg = $successMsg || "成功!";
167			$errMsg = $errMsg || "失败!";
168			$defer.done(function(json_msg){
169				if(json_Msg.state) {
170					var dataType = typeof json_msg.data;
171					if(dataType.toLowerCase() == "string" && json_msg.data)
172					{
173						Hnb.ui.showMessage(json_msg.data);
174					} else {
175						Hnb.ui.showMessage($errMsg);
176					}
177					defer.reject(json_msg);
178				} else{
179					Hnb.ui.showMessage($successMsg);
180					defer.resolve(json_msg);
181				}
182			}).fail(function(json_error){
183				Hnb.ui.showMessage(json_error.data || $errMsg);
184				defer.reject(json_error);
185			});
186			return defer;
187		},
188		toJson: function(str_msg){
189			var json_msg = null;
190			try{
191				var json_msg = JSON.parse(str_msg);
192			}catch(e){
193			}
194			return json_msg;
195		},
196		formatDate: function(o_date , fmt){
197			var o = {
198				"M+": o_date.getMonth() + 1, //月份 
199				"d+": o_date.getDate(), //日 
200				"h+": o_date.getHours(), //小时 
201				"m+": o_date.getMinutes(), //分 
202				"s+": o_date.getSeconds(), //秒 
203				"q+": Math.floor((o_date.getMonth() + 3) / 3), //季度 
204				"S": o_date.getMilliseconds() //毫秒 
205			};
206			if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (o_date.getFullYear() + "").substr(4 - RegExp.$1.length));
207			for (var k in o)
208			if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
209			return fmt;
210		},
211		formatNumber: function(num){
212			num = num - 0;
213			var str_num = Math.abs(num).toString();
214			var arr_num = str_num.split(".");
215			var str_formatNum = "";
216			
217			var length = arr_num[0].length;
218			var extraLen = length % 3;
219			str_formatNum += arr_num[0].substr(0 , extraLen);
220			
221
222			while(extraLen < length){
223				str_formatNum += str_formatNum ? "," : "";
224				str_formatNum += arr_num[0].substr(extraLen , 3);
225				extraLen += 3;
226			}
227			if(arr_num.length == 2){
228				str_formatNum += "." + arr_num[1];
229			}
230			if(num < 0){
231				str_formatNum = "-" + str_formatNum;
232			}
233			return str_formatNum;
234		},
235		checkCertId: function(idCard){
236			return check_idCard(idCard);
237		},
238		getBrowser:function(){
239				    var agent = navigator.userAgent.toLowerCase(),
240				        opera = window.opera,
241				        browser = {
242				        ie		:  /(msie\s|trident.*rv:)([\w.]+)/.test(agent),
243				        opera	: ( !!opera && opera.version ),
244				        webkit	: ( agent.indexOf( ' applewebkit/' ) > -1 ),
245				        mac	: ( agent.indexOf( 'macintosh' ) > -1 ),
246				        quirks : ( document.compatMode == 'BackCompat' )
247				    };
248				    browser.gecko =( navigator.product == 'Gecko' && !browser.webkit && !browser.opera && !browser.ie);
249				    var version = 0;
250				    if ( browser.ie ){
251				        var v1 =  agent.match(/(?:msie\s([\w.]+))/);
252				        var v2 = agent.match(/(?:trident.*rv:([\w.]+))/);
253				        if(v1 && v2 && v1[1] && v2[1]){
254				            version = Math.max(v1[1]*1,v2[1]*1);
255				        }else if(v1 && v1[1]){
256				            version = v1[1]*1;
257				        }else if(v2 && v2[1]){
258				            version = v2[1]*1;
259				        }else{
260				            version = 0;
261				        }
262				        browser.ie11Compat = document.documentMode == 11;
263				        browser.ie9Compat = document.documentMode == 9;
264				        browser.ie8 = !!document.documentMode;
265				        browser.ie8Compat = document.documentMode == 8;
266				        browser.ie7Compat = ( ( version == 7 && !document.documentMode )
267				                || document.documentMode == 7 );
268				        browser.ie6Compat = ( version < 7 || browser.quirks );
269				        browser.ie9above = version > 8;
270				        browser.ie9below = version < 9;
271				        browser.ie11above = version > 10;
272				        browser.ie11below = version < 11;
273				    }
274				    // Gecko.
275				    if ( browser.gecko ){
276				        var geckoRelease = agent.match( /rv:([\d\.]+)/ );
277				        if ( geckoRelease )
278				        {
279				            geckoRelease = geckoRelease[1].split( '.' );
280				            version = geckoRelease[0] * 10000 + ( geckoRelease[1] || 0 ) * 100 + ( geckoRelease[2] || 0 ) * 1;
281				        }
282				    }
283				    if (/chrome\/(\d+\.\d)/i.test(agent)) {
284				        browser.chrome = + RegExp['\x241'];
285				    }
286				    if(/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(agent) && !/chrome/i.test(agent)){
287				    	browser.safari = + (RegExp['\x241'] || RegExp['\x242']);
288				    }
289				    // Opera 9.50+
290				    if ( browser.opera )
291				        version = parseFloat( opera.version() );
292				    // WebKit 522+ (Safari 3+)
293				    if ( browser.webkit )
294				        version = parseFloat( agent.match( / applewebkit\/(\d+)/ )[1] );
295				    /**
296				     * @property { Number } version 检测当前浏览器版本号
297				     * @remind
298				     * <ul>
299				     *     <li>IE系列返回值为5,6,7,8,9,10等</li>
300				     *     <li>gecko系列会返回10900,158900等</li>
301				     *     <li>webkit系列会返回其build号 (如 522等)</li>
302				     * </ul>
303				     * @example
304				     * ```javascript
305				     * console.log( '当前浏览器版本号是: ' + UE.browser.version );
306				     * ```
307				     */
308				    browser.version = version;
309				    browser.isCompatible =
310				        !browser.mobile && (
311				        ( browser.ie && version >= 6 ) ||
312				        ( browser.gecko && version >= 10801 ) ||
313				        ( browser.opera && version >= 9.5 ) ||
314				        ( browser.air && version >= 1 ) ||
315				        ( browser.webkit && version >= 522 ) ||
316				        false );
317				    return browser;
318				}
319		}
320})(window , Hnb);

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.