纯js客服插件集qq、旺旺、skype、百度hi、msn

简介: 原文 纯js客服插件集qq、旺旺、skype、百度hi、msn 客服插件,集qq、旺旺、skype、百度hi、msn 等 即时通讯工具,并可自己添加支持的通讯工具,极简主义,用法自己琢磨。我的博客 http://www.

原文 纯js客服插件集qq、旺旺、skype、百度hi、msn

客服插件,集qq、旺旺、skype、百度hi、msn 等 即时通讯工具,并可自己添加支持的通讯工具,极简主义,用法自己琢磨。我的博客 http://www.qiling.org

 <script>
 //在线客服插件 powered by casejs 极简主义 http://www.mlrzw.cn
 function CaseService(caseServiceConfig) { 
     this.config = caseServiceConfig;
     this.elementId = this.config.elementId ;
     this.tpl = {
         'qq' : {
             'href' : 'http://wpa.qq.com/msgrd?v=3&uin={#account#}&site=qq&menu=yes',
             'img'  : 'http://wpa.qq.com/pa?p=2:{#account#}:{#style#}&time={#rand#}'
          },'wangwang' : {
              'href' : 'http://www.taobao.com/webww/ww.php?ver=3&touid={#account#}&siteid=cntaobao&status={#style#}&charset=utf-8',
              'img'  : 'http://amos.alicdn.com/online.aw?v=2&uid={#account#}&site=cntaobao&s=1&charset=utf-8'
          },'skype' : {
              'href' : 'skype:{#account#}?call',
              'img'  : 'http://mystatus.skype.com/smallclassic/{#account#}'
          },'baiduhi' : {
              'href' : 'baidu://message/?id={#account#}',
              'img'  : 'http://tieba.baidu.com/tb/img/hi/hiOnline.gif'
          },'msn' : {
              'href' : 'msnim:chat?contact={#account#}',
              'img'  : 'http://tieba.baidu.com/tb/img/hi/hiOnline.gif'
          }
      };
      //创建html
      this.buildHtml();
      
      //设置关闭
     var that = this;
      document.getElementById(this.elementId + '_sBtnClose').onclick = function(){
        that.hide();
      };
      //设置打开
     document.getElementById(this.elementId + '_sBtnOpenArea').onclick = function(){
        that.show();
      };
      //将html对象赋值给element
      this.element = document.getElementById(this.config.elementId);
      //判断是否显示
     this.config.isOpen ? this.show() : this.hide();
      //最后滚动到的位置
     this.lastScrollY = 0;
      //滚动
     this.slide();
 } 
 //显示浮动窗口
 CaseService.prototype.show = function() {
      document.getElementById(this.elementId + "_sBtnOpenArea").style.display = 'none';
      document.getElementById(this.elementId + "_serviceWin").style.display = 'block';
 };
 //隐藏浮动窗口
 CaseService.prototype.hide = function() {  
      document.getElementById(this.elementId + "_serviceWin").style.display = 'none';
      document.getElementById(this.elementId + "_sBtnOpenArea").style.display = 'block';
      //如果设置了隐藏的时候关闭  取消事件 并清空 dom
      if(this.config.closeAsHide == false){
          if(this.interval){
              window.clearInterval(this.interval);
          }
          //清空dom
          this.element.innerHTML = '';
      }
 };
 //滚动浮动窗口
 CaseService.prototype.slide = function() {
      //自动设置 定时事件
     if(!this.interval){
          var that = this;
          this.interval = window.setInterval(function(){
              that.slide();
          },1);
      }
      //获取距离顶部的距离
     if (document.documentElement && document.documentElement.scrollTop){
          var diffY = document.documentElement.scrollTop;
      }else{
          var diffY = document.body.scrollTop
      }
      var percent = .1 * ( diffY - this.lastScrollY); 
      percent = (percent > 0)?Math.ceil(percent):Math.floor(percent);
      this.element.style.top = parseInt(this.element.style.top) + percent + "px";
      this.lastScrollY += percent; 
 };
 CaseService.prototype.buildHtml = function(){
      //设置关闭事件
     var accountList = '';
      for (i = 0;i < this.config.accountArray.length ; i++ ){
         accountList +=  (function(){/* 
             <div class="sItem">
               <label>{#label#}</label>
               <a target="_blank" href="{#href#}" title="{#tip#}">
                 <img src="{#img#}" alt="{#tip#}" />
               </a>
             </div>
         */}.toString().replace(/^.+?\*|\\(?=\/)|\*.+?$/gi, ""))
         //替换链接和状态图片 必须在前边
        .replace(/{#href#}/g   , this.tpl[this.config.accountArray[i].type].href)
         .replace(/{#img#}/g    , this.tpl[this.config.accountArray[i].type].img)
         //替换其他参数
        .replace(/{#label#}/g   , this.config.accountArray[i].label)
          .replace(/{#account#}/g , this.config.accountArray[i].account)
          .replace(/{#style#}/g   , this.config.accountArray[i].style)
          .replace(/{#tip#}/g     , this.config.accountArray[i].tip)
          .replace(/{#rand#}/g    , this.config.accountArray[i].rand); 
      };
      var css = (function(){/* 
          <style type="text/css">
          .caseService {font-family:'微软雅黑';text-align: left;}
          .caseService .serviceWin {width:168px;height:auto;border:2px solid {#cssColor#};z-index:999999;}
          .caseService .sTitle {background:{#cssColor#};padding:8px 10px;font-size:14px;color:#FFF;position:relative}
          .caseService .sBtnClose {width: 25px;height: 25px;cursor: pointer;position: absolute;top: 3px;right: 10px;font-size: 25px;line-height: 25px;text-align: right;}
          .caseService .sList {font-size: 14px;color: #444;font-size: 13px;line-height: 20px;padding: 10px;background: #FFF}
          .caseService .sList .sItem{height:30px}
          .caseService .sList label{display:block;width:47%;text-align:right;overflow:hidden;white-space:nowrap;height:30px;float:left}
          .caseService .sList a{display:block;width:52%;float:left;overflow:hidden;height:30px;border:0;padding:0;margin:0}
          .caseService .sList img{display:inline-block;border:0;padding:0;margin:0}
          .caseService .other{border-top:1px dotted #ccc;margin-top:10px;font-size:17px;text-align:center;line-height:28px;padding-top:5px}
          .caseService .sBtnOpenArea {background:{#cssColor#};height: auto;padding: 15px 0;width: 31px;display:none;color:#FFF;font-size:15px;text-align:center;line-height:20px;cursor:pointer}
          .caseService .sBtnOpen{font-size: 24px;height: 25px;}
          </style>
      */}.toString().replace(/^.+?\*|\\(?=\/)|\*.+?$/gi, "")).replace(/{#cssColor#}/g,this.config.color);
       
      var tpl = (function(){/* 
          <div id="{#elementId#}" class="caseService" style="{#style#}" >
            <div id="{#elementId#}_sBtnOpenArea" class="sBtnOpenArea">
              <div class="sBtnOpen">+</div>
              {#closeTitle#}
            </div>
            <div id="{#elementId#}_serviceWin" class="serviceWin" style="{#width#}">
                <div class="sTitle">{#openTitle#}
                  <div id="{#elementId#}_sBtnClose" class="sBtnClose">×</div>
                </div>
                <div class="sList">
                  {#accoundList#}
                  <div class="other">
                  {#other#}
                  </div>
                </div>
            </div>
          </div>
      */}.toString().replace(/^.+?\*|\\(?=\/)|\*.+?$/gi, ""));
      //拼接Html
      serviceWinTpl = css + tpl
          .replace(/{#elementId#}/g,this.config.elementId)
          .replace('{#other#}',this.config.other)
          .replace('{#accoundList#}',accountList)
          .replace('{#width#}',this.config.width)
          .replace('{#style#}',this.config.style)
          .replace('{#closeTitle#}',this.config.closeTitle)
          .replace('{#openTitle#}',this.config.openTitle);
      document.write(serviceWinTpl);
 };
      
      
 //在线客服插件 powered by casejs
 new CaseService( {
      "elementId": "myServiceWin",
      "color": "#266ed2",
      "openTitle": "客服中心",
      "closeTitle": "联<br/>系<br/>我<br/>们",
      "style": "right:0px; top:180px;position: absolute;",
      "width": "width:170px;",
      "isOpen": "true",
      "closeAsHide": "true",
      "other": "服务热线<br />0546-8238915",
      "accountArray": [
          {
              "type": "qq",
              "label": "在线客服:",
              "account": "2095128673",
              "tip": "客服当前在线,欢迎与我联系",
              "style": "1"
          },
          {
              "type": "qq",
              "label": "在线客服:",
              "account": "1113635625",
              "tip": "客服在线",
              "style": "1"
          },
          {
              "type": "qq",
              "label": "技术QQ:",
              "account": "781787584",
              "tip": "点击和我联系",
              "style": "7"
          },
          {
              "type": "wangwang",
              "label": "技术旺旺:",
              "account": "炫彩七零",
              "tip": "点击与我联系",
              "style": "1"
          },
          {
              "type": "msn",
              "label": "技术MSN:",
              "account": "王磊芝",
              "tip": "点击和我联系",
              "style": "0"
          },
          {
              "type": "skype",
              "label": "Skype:",
              "account": "15154625521",
              "tip": "我在线请和我联系",
              "style": "0"
          }
      ]
 } );
 </script>

 

目录
相关文章
|
2月前
|
JavaScript 前端开发 安全
使用 Node.js 插件给指定目录下的所有图片添加上文字水印
使用 Node.js 插件给指定目录下的所有图片添加上文字水印
57 0
|
6月前
|
前端开发 JavaScript 容器
|
6月前
|
前端开发 JavaScript
|
1天前
|
JavaScript
浏览器插件crx文件--JS混淆与解密
浏览器插件crx文件--JS混淆与解密
6 0
|
1月前
|
JSON JavaScript 前端开发
vue项目使用Print.js插件实现PDF文件打印
vue项目使用Print.js插件实现PDF文件打印
40 0
|
6月前
|
JavaScript 前端开发 Go
如何开发你的第一个Vue.js插件:完整指南
如何开发你的第一个Vue.js插件:完整指南
40 0
|
6月前
|
前端开发 JavaScript 索引
|
3月前
|
JavaScript 关系型数据库 MySQL
百度搜索:蓝易云【Node.js写接口连接MySQL数据库教程】
现在,你的Node.js应用已经启动,可以通过访问 `http://localhost:3000/users`来获取所有用户的信息。注意替换上述代码中的数据库连接信息为你自己的实际数据。
48 0
|
3月前
|
JavaScript 数据可视化 前端开发
jQuery-JS插件-第9次课-使用插件让领导对你刮目相看-附案例作业
jQuery-JS插件-第9次课-使用插件让领导对你刮目相看-附案例作业
19 0
|
3月前
|
JavaScript 前端开发 容器
js---Echarts水球图的简单使用方法(ecarts官方插件)
js---Echarts水球图的简单使用方法(ecarts官方插件)
39 0