锘?** * 姝ゆ枃浠剁殑澶撮儴娉ㄩ噴 */ /*global jQuery: false, window: false */ (function ($) { 'use strict'; var pe, tools; pe = window.pe = {}; tools = { /** * 鍒ゆ柇瑕佸姞鐨勯摼鎺ョ鏄?杩樻槸& * @param {} url * @returns {} */ connect: function (url) { var connect = "?"; if (url.indexOf("?") > -1) { connect = "&"; } return connect; }, /** * 涓嶅悓鐨勬祻瑙堝櫒鍒嗗壊hash鐮 * @param {} url * @returns {} */ diffBrowserSplitHash: function (hash) { var hashStr = ""; if (hash.indexOf("#/") > -1) { hashStr = hash.split("#/")[1]; } else if (hash.indexOf("##") > -1) { hashStr = hash.split("##")[1]; } return hashStr; }, /** * 鐗规畩澶勭悊state鍙傛暟 * @param {} url * @returns {} */ FilterStateSpecialChar: function (stateParam) { if (stateParam.substring(0, 1) === "/") { return stateParam.substring(1); } return stateParam; }, /** * 鍚堝苟Url鐨勫弬鏁般€ * @param {string} url 瑕佸悎骞跺弬鏁扮殑Url * @param {Object} param 鍙傛暟 锛屼娇鐢ㄩ敭鍊煎瀵硅薄銆 * @returns {string} 鍚堝苟瀹屾垚鍚庣殑js */ connectUrl: function (url, param) { var querystring = url.split('?')[1] || ''; var params = []; if (querystring) { params = querystring.split('&'); } if (param) { for (var item in param) { if (param.hasOwnProperty(item)) { params.push(item + '=' + param[item]); } } } return url.split('?')[0] + '?' + params.join('&'); }, /** * 鐢熸垚涓€缁勯殢鏈虹殑Id鍙风爜 * @param len 闀垮害 * @param radix 鍙傛暟 * @returns {string} id鍙风爜 */ uuid: function (len, radix) { len = len || 8; radix = radix || 2; var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' .split(''); // UNDONE [2014-4-17] [] 鍙橀噺灏忓啓鍛藉悕銆傝繖閲屼负浠€涔堣鎶奀HARS鍙橀噺璧嬪€肩粰chars锛岃€屼笉鐩存帴鐢–HARS銆 var chars = CHARS, uuid = [], i; radix = radix || chars.length; if (len) { for (i = 0; i < len; i++) { uuid[i] = chars[0 | Math.random() * radix]; } } else { var r; uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; uuid[14] = '4'; for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random() * 16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } } return uuid.join(''); }, errorResultHandler: { 'NotAuthenticated': function (result) { window.top.location.href = result.LogOnUrl; return ''; }, 'NotAuthorized': function (result) { return '鎮ㄦ病鏈夋潈闄愭煡鐪嬫墍璇锋眰鐨勫唴瀹?; } }, RegexHelper: { Url: /(http:\/)?\/[^\/]+/ }, /** * 瑁佸壀瀛楃涓 * @param str {string} 瑕佸壀瑁佺殑瀛楃涓 * @param n {Number} 鍓鐨勯暱搴 * @returns {string} 鍓濂界殑瀛楃涓层€ */ truncateStr: function (str, n) { // UNDONE [2014-4-17] [] 鍑芥暟鍛藉悕涓嶈浣跨敤绠€鍐欙紱鍙橀噺鍛藉悕闂锛涘彉閲忕粺涓€鍦ㄤ唬鐮佸潡寮€澶村懡鍚嶏紝杩樻槸灏辫繎鍛藉悕锛堝彉閲廼锛夛紵 var r = /[^\x00-\xff]/g; var i; if (str.replace(r, 'mm').length <= n) { return str; } // n = n - 3; var m = Math.floor(n / 2); for (i = m; i < str.length; i++) { if (str.substr(0, i).replace(r, 'mm').length >= n) { return str.substr(0, i) + '...'; } } return str; }, HTMLEncode: function (text) { return $('
').text(text).html(); }, HTMLDecode: function (text) { return $('
').html(text).text(); }, /* * 缁檜rl澧炲姞褰撳墠鐨刪ash鍊 * @param url {string} 瑕佸鍔爃ash鍊肩殑url * @return {string} 澧炲姞浜唄ash鍊煎緱url */ AddCurrentHash: function (url) { if (!!url) { var hash = 'state=' + window.location.hash.replace(/^#*/, ''); hash = hash.replace("%20", "+"); url += (/\?/.test(url) ? '&' : '?') + hash; } return url; }, /** * 璺緞鎿嶄綔鍔╂墜銆 */ PathHelperUtils: { /** * 璺緞涓婁紶鐩綍鏇挎崲绗﹁浆鎹负涓婁紶鐩綍锛 澶勭悊鍏煎鎯呭喌銆 * @param {string} path 鍘熻矾寰勩€ * @param {string} symbol * @param {string} uploadDirectory * @return {string} 杩斿洖缁撴灉銆 */ ReplacePathSymbolForShow: function (path, symbol, uploadDirectory) { if (path && symbol && uploadDirectory) { path = path.TrimStartReplace("~"); uploadDirectory = uploadDirectory.TrimStartReplace("~"); if (path.indexOf(symbol) == 0) { var uploadPathPrefix = ""; //// 涓婁紶鐩綍鍓嶇紑锛岄粯璁ゆ槸绌哄瓧绗︿覆銆 path = uploadPathPrefix + uploadDirectory + path.substring(symbol.length); } } return path; }, /** * 璺緞涓婁紶鐩綍鏇挎崲绗﹁浆鎹负涓婁紶鐩綍锛 澶勭悊鍏煎鎯呭喌銆 * @param {string} path 鍘熻矾寰勩€ * @param {string} symbol 涓婁紶鐩綍鏇挎崲绗︺€ * @param {string} uploadVirtualPath 涓婁紶铏氭嫙璺緞銆 * @param {object} regExp 姝e垯琛ㄨ揪寮廟egExp瀵硅薄锛屽鏋滀紶鍏ュ垯浣跨敤浼犲叆鐨勶紝鍚﹀垯浣跨敤鍐呴儴姝e垯琛ㄨ揪寮忕殑銆 * @return {string} 杩斿洖缁撴灉銆 */ ReplaceContentSymbolForShow: function (path, symbol, uploadVirtualPath, regExp) { var regexString = "((src|href)\\s*=\\s*(\"|\'))\\$?\\/(\\/|\\w|\\.|\\{|\\})*"; if (path && symbol && uploadVirtualPath) { path = path.TrimStartReplace("~"); uploadVirtualPath = uploadVirtualPath.TrimStartReplace("~"); if (!regExp) { regExp = new RegExp(regexString, 'gi'); } path = path.replace(regExp, function (match, p1) { var value = match; if (match && p1 && match.indexOf(p1) == 0) { var attributeValue = match.substring(p1.length); attributeValue = attributeValue.ReplacePathSymbolForShow(symbol, uploadVirtualPath); value = p1.concat(attributeValue); } return value; }); } return path; }, TrimStartReplace: function (orignal, target) { if (orignal && target && orignal.length >= target.length) { while (orignal && orignal.indexOf(target) == 0) { orignal = orignal.substring(target.length); } } return orignal; } } }; pe.tools = tools; //object .create if (typeof Object.create !== 'function') { Object.create = function (o) { var f = function () {}; f.prototype = o; return new f(); }; } //Function method if (typeof Function.method !== 'function') { Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; }; } pe.messager = { sendMessage: function (frame, eventName, sendData) { var $iframe = $(frame); var data = { event: 'power.' + eventName, data: sendData }; frame.contentWindow.postMessage(JSON.stringify(data), '*'); } }; /** * 鏇挎崲璺緞涓殑涓婁紶鍗犱綅绗︺€ * @param {string} symbol 鐩綍鏇挎崲绗︺€ * @param {any} uploadDirectory 涓婁紶铏氭嫙鐩綍璺緞銆 * @return {string} 缁撴灉銆 */ String.prototype.ReplacePathSymbolForShow = function (symbol, uploadDirectory) { var path = this; return pe.tools.PathHelperUtils.ReplacePathSymbolForShow(path, symbol, uploadDirectory); }; /** * 鏇挎崲鍐呭涓殑涓婁紶绔欎綅绗︺€ * @param {string} symbol 鐩綍鏇挎崲绗︺€ * @param {string} uploadpath 涓婁紶铏氭嫙鐩綍璺緞銆 * @param {object} regExp 鑷畾涔夋鍒欍€傚鏋滀紶鍏ュ垯浣跨敤浼犲叆鐨勶紝濡傛灉娌℃湁鍒欎娇鐢ㄩ粯璁ょ殑銆 * @return {string} 缁撴灉銆 */ String.prototype.ReplaceContentSymbolForShow = function (symbol, uploadpath, regExp) { var content = this; return pe.tools.PathHelperUtils.ReplaceContentSymbolForShow(content, symbol, uploadpath, regExp); }; String.prototype.TrimStartReplace = function (target) { var orignal = this; return pe.tools.PathHelperUtils.TrimStartReplace(orignal, target); }; }(jQuery));