js实现简易聊天对话框


Posted in Javascript onAugust 17, 2017

本文实例为大家分享了js实现简易聊天对话框的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>聊天对话框</title>
<style type="text/css">
*{font-size: 14px; padding:0; margin:0;}
.main{
 position: relative;
 margin: 20px auto;
 border: 1px solid steelblue;
 width: 430px;
 height: 400px;
}
.msgInput{
 display: block;
 width: 406px;
 height: 60px;
 margin: 10px auto;

}
.sendbtn{
 position: absolute;
 width: 100px;
 height: 29px;
 bottom: 5px;
 right: 10px;
}
.content{
 list-style: none;
 width: 410px;
 height: 280px;
 margin: 5px auto;
 border: 1px dotted #D1D3D6;
 overflow-y: scroll;
}
.msgContent{
 width:auto;
 max-width: 250px;
 height: auto;
 word-break: break-all;
 margin: 5px;
 padding: 3px;
 border-radius: 5px;
}

.content .left{
 float: left;
 text-align: left;
 background-color: lightgrey;
}
.content .right{
 float: right;
 text-align: right;
 background-color: yellowgreen;
}


</style>
<script type="text/javascript">
 window.onload=function(){

 var input = document.getElementById('msg_input');//查找缓存
 document.getElementById('sendbtn').onclick=function () {
  //var input1 = document.getElementById('msg_input');//
  //input0

  sendMsg();
 }



 //快捷键 发送
 document.onkeypress = function (event) {
  var e = event || window.event;
  var keycode = e.keyCode || e.which;
  console.log(e)
  if( keycode==10){//判断同时按下ctrl 和enter
  sendMsg()
  }
 }

 function sendMsg() {
  var input = document.getElementById('msg_input');//查找缓存
  var ul = document.getElementById('content');

  var newLi = document.createElement('li');
  newLi.innerHTML = input.value;
  newLi.className = 'msgContent right';
  ul.appendChild(newLi);

  var div = document.createElement('div');
  div.style = 'clear:both';
  ul.appendChild(div);




  ajax({
  url:'http://jisuznwd.market.alicloudapi.com/iqa/query?question='+input.value,
  success:function (res) {
//  console.log(res)
   var obj = JSON.parse(res);
   console.log(obj)
   var array = obj.result.content;
//   var zhengzhou = array[0];
   var tmp = array;
//   var tmp = '温度:'+zhengzhou.day_air_temperature+','+zhengzhou.day_weather;
   console.log(tmp)

   var newLi = document.createElement('li');
   newLi.innerHTML = tmp;
   newLi.className = 'msgContent left';
   ul.appendChild(newLi);

   var div = document.createElement('div');
   div.style = 'clear:both';
   ul.appendChild(div);
   input.value = '';
   newLi.scrollIntoView();//将元素滚动到可见位置
  }
  })

  input.value = '';
  newLi.scrollIntoView();//将元素滚动到可见位置
 }

 }



 function ajax(obj) {
 //?lastCursor=6610&pageSize=10
//  var url = 'reg.php';
 var xhr = null;
 if(window.ActiveXObject){
  xhr = new ActiveXObject('Microsoft.XMLHTTP')
 }else{
  xhr = new XMLHttpRequest();
 }
// $username = $_REQUEST['username'];
// $password = $_REQUEST['password'];

 //打开与服务器的连接
 if(obj.method){
  xhr.open(obj.method,obj.url,true);
 }else{
  xhr.open('get',obj.url,true);
 }
 xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 xhr.setRequestHeader("Authorization","APPCODE 3e9dfb924f464e9593a95f9d2bbf4348")


 // {username:'zhangsa',password:123123}
// sendData = encodeURIComponent(sendData);


 // 发送请求
 //console.log(res);
 //回调函数
 xhr.onreadystatechange = function () {
//  console.log(xhr.readyState)
  if(xhr.readyState == 4){
  //数据接收完毕
  if(xhr.status == 200){
//   console.log('请求成功',xhr.responseText)
   if(obj.success){
   obj.success(xhr.responseText)
   }

  }else{
//   console.log(xhr.status,'请求出错')
   if(obj.failure){
   obj.failure('请求失败')
   }
  }
  }
 }
//  var sendData = 'username=zhangsan&password=123456';
 if( obj.method == undefined ||obj.method.toLowerCase() =='get'){
  xhr.send(null);//
 }else{
  xhr.send(obj.params);//

 }
 }


</script>

</head>

<body>
 <div id="main" class="main">
 <ul id="content" class="content">
  <li class="msgContent left">hello?</li>
  <div style="clear:both"></div>
  <li class="msgContent left">hello</li>
  <div style="clear:both"></div>
  <li class="msgContent right">hi</li>
  <div style="clear:both"></div>
  <li class="msgContent left">hehe</li>
  <div style="clear:both"></div>
  <li class="msgContent left">goodbye</li>
  <div style="clear:both"></div>
  <li class="msgContent right">。。。。</li>
  <div style="clear:both"></div>
  <li class="msgContent right">sdfasdsadfd fasd fasd fasdfasdfasdf</li>
  <div style="clear:both"></div>
  <li class="msgContent right"> 哈哈</li>
  <div style="clear:both"></div>
 </ul>
 <textarea id="msg_input" class="msgInput"></textarea>
 <button id="sendbtn" class="sendbtn">发送</button>
 </div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
15款优秀的jQuery导航菜单插件分享
Jul 19 Javascript
jQuery1.6 使用方法一
Nov 23 Javascript
字符串的replace方法应用浅析
Dec 06 Javascript
jquery制作搜狐快站页面效果示例分享
Feb 21 Javascript
node.js中的fs.chmod方法使用说明
Dec 18 Javascript
js实现无缝循环滚动
Jun 23 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
Sep 05 Javascript
Angular+Node生成随机数的方法
Jun 16 Javascript
JavaScript基本语法_动力节点Java学院整理
Jun 26 Javascript
微信小程序之选项卡的实现方法
Sep 29 Javascript
详解webpack性能优化——DLL
Oct 20 Javascript
Openlayers3实现车辆轨迹回放功能
Sep 29 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
Aug 17 #Javascript
javascript 日期相减-在线教程(附代码)
Aug 17 #Javascript
微信小程序引用公共js里的方法的实例详解
Aug 17 #Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
Aug 17 #Javascript
史上最全JavaScript数组去重的十种方法(推荐)
Aug 17 #Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
Aug 17 #Javascript
Javascript中的getter和setter初识
Aug 17 #Javascript
You might like
使用php测试硬盘写入速度示例
2014/01/27 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
JavaScript 创建对象
2009/07/17 Javascript
iframe 异步加载技术及性能分析
2011/07/19 Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
js计算精度问题小结
2013/04/22 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
2018/09/03 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
python网络编程学习笔记(三):socket网络服务器
2014/06/09 Python
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
Python中字符串List按照长度排序
2019/07/01 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
迪拜航空官方网站:flydubai
2017/04/20 全球购物
学习心得体会
2014/01/01 职场文书
收银员的岗位职责范本
2014/02/04 职场文书
公务员转正鉴定材料
2014/02/11 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
2014年妇女工作总结
2014/12/06 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
Golang 字符串的常见操作
2022/04/19 Golang