diff --git a/controller/visitor.go b/controller/visitor.go index 01530a7..7dd17a3 100644 --- a/controller/visitor.go +++ b/controller/visitor.go @@ -109,7 +109,7 @@ func PostVisitorLogin(c *gin.Context) { if kefuInfo.ID == 0 { c.JSON(200, gin.H{ "code": 400, - "msg": "客服不存在", + "msg": "The customer service account does not exist", }) return } diff --git a/readme.md b/readme.md index d5541be..ee6aed1 100644 --- a/readme.md +++ b/readme.md @@ -88,18 +88,25 @@ http://127.0.0.1:8081/livechat?user_id=agent Popup Integration ``` - (function(a, b, c, d) { - let h = b.getElementsByTagName('head')[0];let s = b.createElement('script'); - s.type = 'text/javascript';s.src = c+"/static/js/kefu-front.js";s.onload = s.onreadystatechange = function () { - if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") d(c); - };h.appendChild(s); - })(window, document,"http://127.0.0.1:8081",function(u){ - KEFU.init({ - KEFU_URL:u, - KEFU_KEFU_ID: "agent", - }) + ``` ### Important Notice The use of this project for illegal or non-compliant purposes, including but not limited to viruses, trojans, pornography, gambling, fraud, prohibited items, counterfeit products, false information, cryptocurrencies, and financial violations, is strictly prohibited. diff --git a/static/js/chat-widget.js b/static/js/chat-widget.js new file mode 100644 index 0000000..51ea479 --- /dev/null +++ b/static/js/chat-widget.js @@ -0,0 +1,236 @@ +const CHAT_WIDGET = { + API_URL: "", + AGENT_ID: "", + AUTO_OPEN: true, + DISPLAY_MODE: 1, + USER_ID: "", + USER_NAME: "", + USER_AVATAR: "", + isChatOpen: false, + originalPageTitle: document.title, + chatWindowTitle: "Chat with us", + isOffline: false, + iframeId: "chat-widget-iframe", + containerId: "chat-widget-container" +}; + +CHAT_WIDGET.initialize = function(config) { + // Apply configuration + for (let key in config) { + if (this.hasOwnProperty(key)) { + this[key] = config[key]; + } + } + + // Normalize URL by removing trailing slash + if (this.API_URL) { + this.API_URL = this.API_URL.replace(/\/$/, ""); + } + + // Add required CSS styles + this.injectStyles(); + + // Display the chat button + this.createChatButton(); + + // Set up event handlers + this.setupEventHandlers(); +}; + +CHAT_WIDGET.injectStyles = function() { + const style = document.createElement('style'); + style.textContent = ` + #chat-widget-button { + position: fixed; + bottom: 20px; + right: 20px; + width: 60px; + height: 60px; + background-color: #1E88E5; + color: white; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + box-shadow: 0 2px 10px rgba(0,0,0,0.2); + z-index: 9999; + } + + #chat-widget-button .notification-badge { + position: absolute; + top: -5px; + right: -5px; + background-color: #FF5722; + color: white; + border-radius: 50%; + width: 20px; + height: 20px; + display: flex; + align-items: center; + justify-content: center; + font-size: 12px; + } + + #chat-widget-container { + position: fixed; + bottom: 90px; + right: 20px; + width: 350px; + height: 500px; + background: white; + border-radius: 8px; + box-shadow: 0 5px 20px rgba(0,0,0,0.2); + display: none; + flex-direction: column; + z-index: 9998; + overflow: hidden; + } + + #chat-widget-header { + padding: 15px; + background: #1E88E5; + color: white; + display: flex; + align-items: center; + } + + #chat-widget-iframe { + flex: 1; + border: none; + } + + .close-button { + margin-left: auto; + cursor: pointer; + font-size: 20px; + } + `; + document.head.appendChild(style); +}; + +CHAT_WIDGET.createChatButton = function() { + const button = document.createElement('div'); + button.id = 'chat-widget-button'; + button.innerHTML = ` + + + + + `; + document.body.appendChild(button); + + button.addEventListener('click', () => { + this.openChatWindow(); + }); + + // Open automatically if configured + if (this.AUTO_OPEN) { + setTimeout(() => { + this.openChatWindow(); + }, 3000); + } +}; + +CHAT_WIDGET.openChatWindow = function() { + if (this.isChatOpen) return; + + const badge = document.querySelector('#chat-widget-button .notification-badge'); + badge.style.display = 'none'; + badge.textContent = '0'; + + // Create container if it doesn't exist + if (!document.getElementById(this.containerId)) { + const container = document.createElement('div'); + container.id = this.containerId; + container.innerHTML = ` +
+ chat with us + × +
+ + `; + document.body.appendChild(container); + + // Add close button handler + document.querySelector(`#${this.containerId} .close-button`).addEventListener('click', () => { + this.closeChatWindow(); + }); + } + + // Show the chat window + document.getElementById(this.containerId).style.display = 'flex'; + this.isChatOpen = true; + + // Hide the floating button + document.getElementById('chat-widget-button').style.display = 'none'; +}; + +CHAT_WIDGET.closeChatWindow = function() { + document.getElementById(this.containerId).style.display = 'none'; + this.isChatOpen = false; + document.getElementById('chat-widget-button').style.display = 'flex'; +}; + +CHAT_WIDGET.buildChatUrl = function() { + let url = `${this.API_URL}/livechat?user_id=${this.AGENT_ID}`; + + if (this.USER_ID) { + url += `&user_id=${this.USER_ID}`; + } + if (this.USER_NAME) { + url += `&name=${encodeURIComponent(this.USER_NAME)}`; + } + if (this.USER_AVATAR) { + url += `&avatar=${encodeURIComponent(this.USER_AVATAR)}`; + } + + return url; +}; + +CHAT_WIDGET.setupEventHandlers = function() { + // Handle messages from the chat iframe + window.addEventListener('message', (e) => { + if (!e.data || !e.data.type) return; + + switch (e.data.type) { + case 'new_message': + this.handleIncomingMessage(e.data); + break; + case 'close_chat': + this.closeChatWindow(); + break; + } + }); +}; + +CHAT_WIDGET.handleIncomingMessage = function(data) { + // Update notification badge + const badge = document.querySelector('#chat-widget-button .notification-badge'); + let count = parseInt(badge.textContent || '0'); + + if (!this.isChatOpen) { + count++; + badge.textContent = count; + badge.style.display = 'flex'; + + // Flash title if window is not focused + if (!document.hasFocus()) { + this.notifyWithTitleFlash(); + } + } +}; + +CHAT_WIDGET.notifyWithTitleFlash = function() { + let isFlashing = true; + const flashInterval = setInterval(() => { + document.title = isFlashing ? "New message!" : this.originalPageTitle; + isFlashing = !isFlashing; + }, 1000); + + // Stop flashing when window regains focus + window.addEventListener('focus', () => { + clearInterval(flashInterval); + document.title = this.originalPageTitle; + }, { once: true }); +}; \ No newline at end of file diff --git a/static/js/gofly-front.js b/static/js/gofly-front.js deleted file mode 100644 index 455fc3f..0000000 --- a/static/js/gofly-front.js +++ /dev/null @@ -1,335 +0,0 @@ -var GOFLY={ - GOFLY_URL:"", - GOFLY_KEFU_ID:"", - GOFLY_BTN_TEXT:"Chat with me", - GOFLY_LANG:"en", - GOFLY_EXTRA: {}, - GOFLY_AUTO_OPEN:true, - GOFLY_AUTO_SHOW:false, - GOFLY_WITHOUT_BTN:false, -}; -GOFLY.launchButtonFlag=false; -GOFLY.titleTimer=0; -GOFLY.titleNum=0; -GOFLY.noticeTimer=null; -GOFLY.originTitle=document.title; -GOFLY.chatPageTitle="GOFLY"; -GOFLY.kefuName=""; -GOFLY.kefuAvator=""; -GOFLY.init=function(config){ - var _this=this; - if(typeof config=="undefined"){ - return; - } - - if (typeof config.GOFLY_URL!="undefined"){ - this.GOFLY_URL=config.GOFLY_URL.replace(/([\w\W]+)\/$/,"$1"); - } - this.dynamicLoadCss(this.GOFLY_URL+"/static/css/gofly-front.css?v=1"); - - if (typeof config.GOFLY_KEFU_ID!="undefined"){ - this.GOFLY_KEFU_ID=config.GOFLY_KEFU_ID; - } - if (typeof config.GOFLY_BTN_TEXT!="undefined"){ - this.GOFLY_BTN_TEXT=config.GOFLY_BTN_TEXT; - } - if (typeof config.GOFLY_EXTRA!="undefined"){ - this.GOFLY_EXTRA=config.GOFLY_EXTRA; - } - if (typeof config.GOFLY_AUTO_OPEN!="undefined"){ - this.GOFLY_AUTO_OPEN=config.GOFLY_AUTO_OPEN; - } - if (typeof config.GOFLY_AUTO_SHOW!="undefined"){ - this.GOFLY_AUTO_SHOW=config.GOFLY_AUTO_SHOW; - } - if (typeof config.GOFLY_WITHOUT_BTN!="undefined"){ - this.GOFLY_WITHOUT_BTN=config.GOFLY_WITHOUT_BTN; - } - var refer=document.referrer?document.referrer:"无"; - this.GOFLY_EXTRA.refer=refer; - this.GOFLY_EXTRA.host=document.location.href; - this.GOFLY_EXTRA=JSON.stringify(_this.GOFLY_EXTRA); - - this.dynamicLoadJs(this.GOFLY_URL+"/assets/js/functions.js?v=1",function(){ - if (typeof config.GOFLY_LANG!="undefined"){ - _this.GOFLY_LANG=config.GOFLY_LANG; - }else{ - _this.GOFLY_LANG=checkLang(); - } - _this.GOFLY_EXTRA=utf8ToB64(_this.GOFLY_EXTRA); - }); - if (typeof $!="function"){ - this.dynamicLoadJs("https://cdn.staticfile.org/jquery/3.6.0/jquery.min.js",function () { - _this.dynamicLoadJs("https://cdn.staticfile.org/layer/3.4.0/layer.min.js",function () { - _this.jsCallBack(); - }); - }); - }else{ - this.dynamicLoadJs("https://cdn.staticfile.org/layer/3.4.0/layer.min.js",function () { - _this.jsCallBack(); - }); - } - _this.addEventlisten(); -} -GOFLY.jsCallBack=function(){ - this.showKefuBtn(); - this.addClickEvent(); - this.getNotice(); -} -GOFLY.showKefuBtn=function(){ - var _this=this; - if(_this.GOFLY_WITHOUT_BTN){ - return; - } - var html="
" + - '
' + - '
1
' + - '
'+_this.GOFLY_BTN_TEXT+'
' + - '
' + - '
'; - $('body').append(html); -} -GOFLY.addClickEvent=function(){ - var _this=this; - $(".launchButton").on("click",function() { - _this.GOFLY_AUTO_SHOW=true; - _this.showKefu(); - $("#launchIcon").text(0).hide(); - }); - - $("body").on("click","#launchNoticeClose",function() { - $("#launchButtonNotice").hide(); - }); - - $("body").click(function () { - clearTimeout(_this.titleTimer); - document.title = _this.originTitle; - }); -} -GOFLY.addEventlisten=function(){ - var _this=this; - window.addEventListener('message',function(e){ - var msg=e.data; - if(msg.type=="message"){ - clearInterval(_this.noticeTimer); - var width=$(window).width(); - if(width>768){ - _this.flashTitle();//标题闪烁 - } - if (_this.launchButtonFlag){ - return; - } - var welcomeHtml="
"+msg.data.name+"" + - "×" + - "
"; - welcomeHtml+="
"+replaceContent(msg.data.content,_this.GOFLY_URL)+"
"; - $("#launchButtonNotice").html(welcomeHtml).show(); - var news=$("#launchIcon").text(); - $("#launchIcon").text(++news).show(); - } - if(msg.type=="focus"){ - clearTimeout(_this.titleTimer); - _this.titleTimer=0; - document.title = _this.originTitle; - } - }); - window.onfocus = function () { - clearTimeout(_this.titleTimer); - _this.titleTimer=0; - document.title = _this.originTitle; - }; -} -GOFLY.dynamicLoadCss=function(url){ - var head = document.getElementsByTagName('head')[0]; - var link = document.createElement('link'); - link.type='text/css'; - link.rel = 'stylesheet'; - link.href = url; - head.appendChild(link); -} -GOFLY.dynamicLoadJs=function(url, callback){ - var head = document.getElementsByTagName('head')[0]; - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.src = url; - if(typeof(callback)=='function'){ - script.onload = script.onreadystatechange = function () { - if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete"){ - callback(); - script.onload = script.onreadystatechange = null; - } - }; - } - head.appendChild(script); -} - -GOFLY.getNotice=function(){ - var _this=this; - $.get(this.GOFLY_URL+"/notice?kefu_id="+this.GOFLY_KEFU_ID,function(res) { - if(res.result.status=='offline'){ - _this.chatPageTitle="
"; - }else{ - _this.chatPageTitle="
"; - setTimeout(function(){ - var userInfo=" "+res.result.username+"" - $('.launchButtonText').html(userInfo); - },3000); - } - _this.kefuAvator=res.result.avatar; - _this.kefuName=res.result.username; - _this.chatPageTitle+=""+res.result.username; - if(_this.GOFLY_AUTO_OPEN&&_this.isIE()<=0){ - _this.showKefu(); - $(".launchButtonBox").show(); - _this.launchButtonFlag=false; - } - if (res.result.welcome != null) { - var msg = res.result.welcome; - var len=msg.length; - var i=0; - if(len>0){ - - _this.noticeTimer=setInterval(function(){ - if(i>=len||typeof msg[i]=="undefined"||msg[i]==null){ - clearInterval(_this.noticeTimer); - return; - } - var content = msg[i]; - if(typeof content.content =="undefined"){ - return; - } - var welcomeHtml="
"+res.result.username+"" + - "×" + - "
"; - welcomeHtml+="
"+replaceContent(content.content,_this.GOFLY_URL)+"
"; - - var obj=$("#launchButtonNotice"); - if(obj[0]){ - obj[0].innerHTML=welcomeHtml; - obj.show(); - } - i++; - $("#launchIcon").text(i).show(); - },4000); - } - - } - }); -} -GOFLY.isIE=function(){ - var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 - var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器 - var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器 - var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1; - if(isIE) { - var reIE = new RegExp("MSIE (\\d+\\.\\d+);"); - reIE.test(userAgent); - var fIEVersion = parseFloat(RegExp["$1"]); - if(fIEVersion == 7) { - return 7; - } else if(fIEVersion == 8) { - return 8; - } else if(fIEVersion == 9) { - return 9; - } else if(fIEVersion == 10) { - return 10; - } else { - return 6;//IE版本<=7 - } - } else if(isEdge) { - return 'edge';//edge - } else if(isIE11) { - return 11; //IE11 - }else{ - return -1;//不是ie浏览器 - } -} -GOFLY.showPanel=function (){ - var width=$(window).width(); - this.GOFLY_AUTO_SHOW=true; - if(this.isIE()>0){ - this.windowOpen(); - return; - } - if(width<768){ - this.layerOpen("100%","100%"); - return; - } - this.layerOpen("400px","530px"); - this.launchButtonFlag=true; -} -GOFLY.showKefu=function (){ - if (this.launchButtonFlag) return; - var width=$(window).width(); - if(this.isIE()>0){ - this.windowOpen(); - return; - } - if(width<768){ - this.layerOpen("100%","100%"); - return; - } - this.layerOpen("400px","530px"); - this.launchButtonFlag=true; - $(".launchButtonBox").hide(); -} -GOFLY.layerOpen=function (width,height){ - if (this.launchButtonFlag) return; - var layBox=$("#layui-layer19911116"); - if(layBox.css("display")=="none"){ - layBox.show(); - return; - } - var _this=this; - layer.index="19911115"; - layer.open({ - type: 2, - title: this.chatPageTitle, - closeBtn: 1, //不显示关闭按钮 - shade: 0, - area: [width, height], - offset: 'rb', //右下角弹出 - anim: 2, - content: [this.GOFLY_URL+'/chatIndex?kefu_id='+this.GOFLY_KEFU_ID+'&lang='+this.GOFLY_LANG+'&refer='+window.document.title+'&extra='+this.GOFLY_EXTRA , 'yes'], //iframe的url,no代表不显示滚动条 - success:function(){ - var layBox=$("#layui-layer19911116"); - if(_this.GOFLY_AUTO_SHOW&&layBox.css("display")=="none"){ - _this.launchButtonFlag=true; - layBox.show(); - } - }, - end: function(){ - _this.launchButtonFlag=false; - $(".launchButtonBox").show(); - }, - cancel: function(index, layero){ - $("#layui-layer19911116").hide(); - _this.launchButtonFlag=false; - $(".launchButtonBox").show(); - return false; - } - }); -} -GOFLY.windowOpen=function (){ - window.open(this.GOFLY_URL+'/chatIndex?kefu_id='+this.GOFLY_KEFU_ID+'&lang='+this.GOFLY_LANG+'&refer='+window.document.title+'&extra='+this.GOFLY_EXTRA); -} -GOFLY.flashTitle=function () { - if(this.titleTimer!=0){ - return; - } - this.titleTimer = setInterval("GOFLY.flashTitleFunc()", 500); -} -GOFLY.flashTitleFunc=function(){ - this.titleNum++; - if (this.titleNum >=3) { - this.titleNum = 1; - } - if (this.titleNum == 1) { - document.title = '【】' + this.originTitle; - } - if (this.titleNum == 2) { - document.title = '【new message】' + this.originTitle; - } -} - - diff --git a/static/js/kefu-front.js b/static/js/kefu-front.js deleted file mode 100644 index fc9f129..0000000 --- a/static/js/kefu-front.js +++ /dev/null @@ -1,368 +0,0 @@ -const KEFU={ - KEFU_URL:"", - KEFU_KEFU_ID:"", - KEFU_ENT:"", - KEFU_LANG:"en", - KEFU_EXTRA: {}, - KEFU_AUTO_OPEN:true,//是否自动打开 - KEFU_SHOW_TYPES:1,//展示样式,1:普通右下角,2:圆形icon - KEFU_AUTO_SHOW:false, - KEFU_WITHOUT_BOX:false, - VISITOR_ID:"", - VISITOR_NAME:"", - VISITOR_AVATOR:"", -}; -KEFU.launchButtonFlag=false; -KEFU.titleTimer=0; -KEFU.titleNum=0; -KEFU.noticeTimer=null; -KEFU.originTitle=document.title; -KEFU.chatPageTitle="KEFU"; -KEFU.kefuName=""; -KEFU.kefuAvator=""; -KEFU.kefuIntroduce=""; -KEFU.kefuDialogDelay="3000"; -KEFU.offLine=false; -KEFU.TEXT={ - "cn":{ - "online_notice":"在线咨询", - "offline_notice":"离线留言", - }, - "en":{ - "online_notice":"chat with us", - "offline_notice":"we are offline", - }, - "ru":{ - "online_notice":"Разговор с нами", - "offline_notice":"Мы оффлайн", - }, -}; - -KEFU.init=function(config){ - var _this=this; - - if (!config) { config = {}; } - - for (var key in KEFU) { - if (typeof config[key] !== 'undefined') { - this[key] = config[key]; - } else { - this[key] = KEFU[key]; - } - } - - if (typeof config.KEFU_URL!="undefined"){ - this.KEFU_URL=config.KEFU_URL.replace(/([\w\W]+)\/$/,"$1"); - } - this.dynamicLoadCss(this.KEFU_URL+"/static/css/kefu-front.css?v="+Date.now()); - this.dynamicLoadCss(this.KEFU_URL+"/static/css/layui/css/layui.css?v="+Date.now()); - - var refer=document.referrer?document.referrer:"none"; - this.KEFU_EXTRA.refer=refer; - this.KEFU_EXTRA.host=document.location.href; - this.KEFU_EXTRA=JSON.stringify(_this.KEFU_EXTRA); - - this.dynamicLoadJs(this.KEFU_URL+"/static/js/functions.js?v=1",function(){ - - _this.dynamicLoadJs("https://cdn.staticfile.org/jquery/3.6.0/jquery.min.js",function () { - jQuery.noConflict(); - _this.dynamicLoadJs(_this.KEFU_URL+"/static/js/layer/layer.js",function () { - _this.jsCallBack(); - }); - }); - //} - }); - - - _this.addEventlisten(); -} -KEFU.jsCallBack=function(){ - var _this=this; - _this.showPcTips(); - _this.addClickEvent(); -} -//pc端的样式 -KEFU.showPcTips=function(){ - var _this=this; - - //自动展开 - if(_this.KEFU_AUTO_OPEN&&_this.isIE()<=0){ - setTimeout(function () { - _this.showKefu(); - },_this.kefuDialogDelay); - } - - var html=` -
-
-
1
-
- - 在线咨询 -
-
-
- -
-` - jQuery('body').append(html); - if(_this.KEFU_AUTO_OPEN){ - return; - } -} - -KEFU.addClickEvent=function(){ - var _this=this; - var launchButton=jQuery("#launchButton"); - if(launchButton){ - launchButton.on("click",function() { - if(_this.launchButtonFlag){ - return; - } - _this.KEFU_AUTO_SHOW=true; - _this.showKefu(); - jQuery("#launchIcon").text(0).hide(); - }); - } - -} - -KEFU.postMessageToIframe=function(str){ - var msg={} - msg.type='inputing_message'; - msg.content=str; - this.postToIframe(msg); -} -KEFU.postToIframe=function(messageObj){ - var obj=document.getElementById('layui-layer-iframe19911116'); - if(!obj||!messageObj){ - return; - } - document.getElementById('layui-layer-iframe19911116').contentWindow.postMessage(messageObj, "*"); -} -KEFU.addEventlisten=function(){ - var _this=this; - window.addEventListener('message',function(e){ - var msg=e.data; - if(msg.type=="message"){ - clearInterval(_this.noticeTimer); - var width=jQuery(window).width(); - if(width>768){ - _this.flashTitle();//标题闪烁 - } - if (_this.launchButtonFlag){ - return; - } - var welcomeHtml="
×
" - +"
" - + "
" - +"
" - +replaceSpecialTag(msg.data.content,_this.KEFU_URL)+"
"; - - var obj=jQuery("#launchButtonNotice"); - if(obj){ - obj.html(welcomeHtml).fadeIn(); - // setTimeout(function (obj) { - // obj.fadeOut(); - // },3000,obj); - } - var news=jQuery("#launchIcon").text(); - jQuery("#launchIcon").text(++news).show(); - } - if(msg.type=="focus"){ - clearTimeout(_this.titleTimer); - _this.titleTimer=0; - document.title = _this.originTitle; - } - if(msg.type=="force_close"){ - kayer.close(kayer.index); - } - }); - window.onfocus = function () { - clearTimeout(_this.titleTimer); - _this.titleTimer=0; - document.title = _this.originTitle; - _this.postToIframe({type:"focus"}); - }; -} -KEFU.dynamicLoadCss=function(url){ - var head = document.getElementsByTagName('head')[0]; - var link = document.createElement('link'); - link.type='text/css'; - link.rel = 'stylesheet'; - link.href = url; - head.appendChild(link); -} -KEFU.dynamicLoadJs=function(url, callback){ - var head = document.getElementsByTagName('head')[0]; - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.src = url; - script.defer = true; - if(typeof(callback)=='function'){ - script.onload = script.onreadystatechange = function () { - if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete"){ - callback(); - script.onload = script.onreadystatechange = null; - } - }; - } - head.appendChild(script); -} - - -KEFU.isIE=function(){ - var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 - var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器 - var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器 - var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1; - if(isIE) { - var reIE = new RegExp("MSIE (\\d+\\.\\d+);"); - reIE.test(userAgent); - var fIEVersion = parseFloat(RegExp["$1"]); - if(fIEVersion == 7) { - return 7; - } else if(fIEVersion == 8) { - return 8; - } else if(fIEVersion == 9) { - return 9; - } else if(fIEVersion == 10) { - return 10; - } else { - return 6;//IE版本<=7 - } - } else if(isEdge) { - return 'edge';//edge - } else if(isIE11) { - return 11; //IE11 - }else{ - return -1;//不是ie浏览器 - } -} -KEFU.showPanel=function (){ - var width=jQuery(window).width(); - this.KEFU_AUTO_SHOW=true; - if(this.isIE()>0){ - this.windowOpen(); - return; - } - if(width<768){ - this.layerOpen("100%","72%","rb"); - return; - } - var width=380; - var height=580; - var x=document.documentElement.clientWidth-parseInt(width)-20; - var y=document.documentElement.clientHeight-parseInt(height)-20; - this.layerOpen(width+"px",height+"px",[y,x]); - - this.launchButtonFlag=true; -} -KEFU.showKefu=function (){ - if (this.launchButtonFlag) return; - var width=jQuery(window).width(); - if(this.isIE()>0){ - this.windowOpen(); - return; - } - if(width<768){ - this.layerOpen("100%","72%","rb"); - return; - } - var width=380; - var height=580; - var x=document.documentElement.clientWidth-parseInt(width)-20; - var y=document.documentElement.clientHeight-parseInt(height)-20; - this.layerOpen(width+"px",height+"px",[y,x]); - this.launchButtonFlag=true; - jQuery(".launchButtonBox").hide(); -} -KEFU.layerOpen=function (width,height,offset){ - if (this.launchButtonFlag) return; - var layBox=jQuery("#layui-layer19911116"); - if(layBox.css("display")=="none"){ - this.launchButtonFlag=true; - layBox.show(); - return; - } - var onlineStatus=""; - if(this.offLine){ - onlineStatus=""; - } - var title=` -
-
- - -
-
-
在线客服系统
-
-
- `; - var _this=this; - if(!offset){ - offset="rb"; - } - var chatUrl=this.KEFU_URL+'/chatIndex?kefu_id='+this.KEFU_KEFU_ID+'&lang='+this.KEFU_LANG+'&extra='+this.KEFU_EXTRA; - if(this.VISITOR_ID!=""){ - chatUrl+="&visitor_id="+this.VISITOR_ID; - } - if(this.VISITOR_NAME!=""){ - chatUrl+="&visitor_name="+this.VISITOR_NAME; - } - if(this.VISITOR_AVATOR!=""){ - chatUrl+="&avator="+this.VISITOR_AVATOR; - } - - kayer.index="19911115"; - kayer.open({ - type: 2, - title: title, - skin:"kfLayer", - closeBtn: 1, //不显示关闭按钮 - shade: 0, - area: [width, height], - offset: offset, //右下角弹出 - anim: 2, - content: [chatUrl , 'yes'], //iframe的url,no代表不显示滚动条 - move:false, - success:function(layero, index){ - - var layBox=jQuery("#layui-layer19911116"); - _this.launchButtonFlag=true; - if(!_this.KEFU_WITHOUT_BOX&&_this.KEFU_AUTO_SHOW&&layBox.css("display")=="none"){ - layBox.show(); - } - jQuery("#layui-layer-iframe19911116 .chatEntTitle").hide(); - }, - end: function(){ - _this.launchButtonFlag=false; - jQuery(".launchButtonBox").show(); - }, - cancel: function(index, layero){ - jQuery("#layui-layer19911116").hide(); - _this.launchButtonFlag=false; - jQuery(".launchButtonBox").show(); - return false; - } - }); -} -KEFU.windowOpen=function (){ - window.open(this.KEFU_URL+'/chatIndex?kefu_id='+this.KEFU_KEFU_ID+'&lang='+this.KEFU_LANG+'&refer='+window.document.title+'&ent_id='+this.KEFU_ENT+'&extra='+this.KEFU_EXTRA); -} -KEFU.flashTitle=function () { - flashTitle(); -} - -/** - * 判断是否是手机访问 - * @returns {boolean} - */ -KEFU.isMobile=function () { - if( /Mobile|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { - return true; - } - return false; -} -