// 转义聊天内容中的特殊字符 function replaceContent(content) { // 支持的html标签 var html = function (end) { return new RegExp('\\n*\\[' + (end || '') + '(pre|div|span|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)\\]\\n*', 'g'); }; content = (content || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&') .replace(//g, '>').replace(/'/g, ''').replace(/"/g, '"') // XSS .replace(/@(\S+)(\s+?|$)/g, '@$1$2') // 转义@ .replace(/face\[([^\s\[\]]+?)\]/g, function (face) { // 转义表情 var alt = face.replace(/^face/g, ''); return '' + alt + ''; }) .replace(/img\[([^\s]+?)\]/g, function (img) { // 转义图片 return ''; }) .replace(/file\([\s\S]+?\)\[[\s\S]*?\]/g, function (str) { // 转义文件 var href = (str.match(/file\(([\s\S]+?)\)\[/) || [])[1]; var text = (str.match(/\)\[([\s\S]*?)\]/) || [])[1]; if (!href) return str; return '' + (text || href) + ''; }) .replace(/a\([\s\S]+?\)\[[\s\S]*?\]/g, function (str) { // 转义链接 var href = (str.match(/a\(([\s\S]+?)\)\[/) || [])[1]; var text = (str.match(/\)\[([\s\S]*?)\]/) || [])[1]; if (!href) return str; return '' + (text || href) + ''; }).replace(html(), '\<$1 $2\>').replace(html('/'), '\') // 转移HTML代码 .replace(/\n/g, '
') // 转义换行 return content; }; // 表情替换 var faces = function () { var alt = getFacesIcon(), arr = {}; layui.each(alt, function (index, item) { arr[item] = '/static/service/js/layui/images/face/' + index + '.png'; }); return arr; }(); // 表情对应数组 function getFacesIcon() { return ["[白眼]", "[抱歉]", "[崩溃]", "[啵一个]", "[不理你了]", "[不要]", "[呲牙]", "[打呼]", "[担心]", "[得意]", "[发抖]", "[犯错]", "[愤怒]", "[感冒]", "[鬼脸]", "[汗]", "[吼吼]", "[焦虑]", "[惊呆]", "[囧]", "[可爱]", "[可怕]", "[冷汗]", "[冷漠]", "[脸红]", "[流鼻涕]", "[流口水]", "[流泪]", "[冒金星]", "[么么哒]", "[难受]", "[气死了]", "[色]", "[傻笑]", "[生气]", "[使眼色]", "[是吗]", "[睡]", "[思考]", "[天使]", "[调皮]", "[偷笑]", "[吐舌头]", "[微笑]", "[委屈]", "[无语]", "[嫌弃]", "[笑哭]", "[笑死了]" ] } /** * 生成uuid * @param {*} prefix 前缀 */ function uuid(prefix = '') { // 生成随机值 function S4() { return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); } var id = prefix + (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4()); return id; } /** * 获取时间 */ function getTime() { var myDate = new Date(); var year = myDate.getFullYear(); var month = myDate.getMonth() + 1; var date = myDate.getDate(); var hour = myDate.getHours(); var minute = myDate.getMinutes(); var s = myDate.getSeconds(); if (date < 10) date = '0' + date; if (month < 10) month = '0' + month; if (hour < 10) hour = '0' + hour; if (minute < 10) minute = '0' + minute; if (s < 10) s = '0' + s; return year + '-' + month + "-" + date + " " + hour + ':' + minute + ':' + s; } /** * 检测消息聊天时间 * @param {*} chat_list_id * @param {*} chat_list_id * @return true: 显示时间, false: 不显示时间 */ function checkMegTime(next_time = '', new_data, msg_time) { // 最新的一个时间块 if (!next_time) return true; //replace方法将-转为/ var next_time_begin = new Date(next_time.replace(/-/g, "/")); var new_time_begin = new Date(new_data.replace(/-/g, "/")); // 相差是时间毫秒 var date_diff = new_time_begin.getTime() - next_time_begin.getTime(); var leave1 = date_diff % (24 * 3600 * 1000) //计算天数后剩余的毫秒数 // 计算相差分钟数 var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数 var minutes = Math.floor(leave2 / (60 * 1000)) //计算相差分钟数 if (minutes >= msg_time) return true; return false; } function getCutout(obj) { var index = obj.lastIndexOf("["); obj = obj.substring(index, obj.length); return obj; }