jQuery实现简单聊天室


Posted in jQuery onFebruary 08, 2020

自从看了jQuery后,顿时感觉其的确很简单易学。下面就一把自己写的一个简易的聊天室程序写出来。

主要就是利用jQuery的ajax,然后,别的其实也没什么了。先上client端的程序吧。

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8"/>
 <meta name="viewport" content="width=device-width"/>
 <link rel="stylesheet" type="text/css" href="./styles/chat-mobile.css" rel="external nofollow" />
 <script type="text/javascript" src="./scripts/jquery-1.8.2.min.js"></script>
 <script type="text/javascript">
 $(function() {
 timestamp = 0;
 updateMsg(timestamp);
 $('button').click(function() { //重点是这里,从这里向服务器端发送数据
  $.post('chat.php', {
  'message': $('#msg').val(),
  'name': $('#name').val(),
  'timestamp': timestamp
  },function(xml) {
  $('#msg').val('');
  addMessage(xml);
  });
  return false;
 });
 
 $('#name').blur(function (){ //仅仅用来控制名字输入框的背景
  if ($('#name').val()) {
  $(this).css({"background": "url(images/background.jpg)", "border": "2px dashed #fff"});
  };
 });
 $('#name').click(function () {
  $(this).css({"background": "#fff", "border": "2px solid #fff"});
 })
 
 });
 //update message
 function updateMsg(timestamp) { //从服务器端更新聊天数据,并载入吧
 $.post('chat.php', {'timestamp': timestamp}, function(xml) {
  $('#loading').remove();
  addMessage(xml);
 });
 setTimeout('updateMsg(timestamp);', 1000); //1s刷新一次信息
 }
 function addMessage(xml) { //解析xml,并添加到页面内
 if($('status', xml).text() == 2) {
  return;
 };
 timestamp = $('timestamp', xml).text();
 $('message', xml).each(function() {
  var author = $('author', this).text();
  var content = $('content', this).text();
  var time = $('time', this).text();
  var htmlcode = '<div><strong>' + author + ': </strong><label>' + time + '</label><p>' + content + '</p></div>';
  $('#messageWindow').append(htmlcode);
  scrollToBottom();
 });
 }
 function scrollToBottom () { //控制滚动条一直显示在底部
 var height = document.getElementById('messageWindow').scrollHeight;
 if (height > $('#messageWindow').scrollTop()) {
  $('#messageWindow').scrollTop(height);
 }
 }
 
 </script>
</head>
<body>
 <header>
 <div id="hr"></div>
 </header>
 
 <div id="wrapper">
 <div id="window">
  <div id="messageWindow">
  <span id="loading">loading...</span>
  </div>
  <form id="chatform">
  <label>your message:</label>
  <textarea type="text" id="msg" size="50"/></textarea>
  <input type="text" id="name" size="10" placeholder="your name"/>
  <button accesskey="s">Send</button>
  </form>
 </div>
 </div>
 <br/>
 <br/>
 <p id="hint">Hint: 移动版的,开放的聊天室</p>
 
 <footer>
 <p>©SamuraiMe</p>
 </footer>
</body>
</html>

服务器端我是用php写的简单程序,把产生的xml贴出来。其实就是简简单单给数据库存数据取数据的一个过程。

<?xml version="1.0" encoding="utf-8"?>
<response>
 <status></status>
 <timestamp></timestamp>
 <message>
 <author></author>
 <content></content>
 <time></time>
 </message>
</response>

jQuery实现简单聊天室

上面就是最后成品,手机截图不方便,就在firefox上截了,效果是一样的。虽然css写得磕碜了点。但是还是有需要注意的地方。就像图上'how are you ...'那一大串,如果换成'1111...111'一大串,就会产生scroll-x,移动端好像没有出现滚动条,消息就看不到了。这怎么能容忍。于是要加

word-wrap: break-word;

本来我以为要写字符串程序,自己手动来换行,有了word-wrap就一句话搞定了。

最后要说,jQuery的确是简单好用,但终究是一个轻量级库,很多事情是完成不了的,就比如让那个滚动条一直显示在底部,我就发现无法用jQuery完成,也许是我才看jQuery,还没找到获取scrollHeight的方法,最后只能回到不熟悉的js上面去。

var height = document.getElementById('messageWindow').scrollHeight;
if (height > $('#messageWindow').scrollTop()) {
	$('#messageWindow').scrollTop(height);
}

差点忘了说了。

<meta name="viewport" content="width=device-width"/>

在移动端有一个虚拟可视区域,比实际的可视区域要大一些。第一次在手机上查看的时候,总有scroll出现,用了这个meta就可以解决了。

最后,这是我第一篇技术博客。希望对看到的人能有所帮助。

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

jQuery 相关文章推荐
jquery实现图片平滑滚动详解
Mar 22 jQuery
jQuery使用unlock.js插件实现滑动解锁
Apr 04 jQuery
jquery中封装函数传递当前元素的方法示例
May 05 jQuery
Jquery中attr与prop的区别详解
May 27 jQuery
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
Sep 20 jQuery
jQuery实现的鼠标响应缓冲动画效果示例
Feb 13 jQuery
jQuery中内容过滤器简单用法示例
Mar 31 jQuery
jQuery实现form表单序列化转换为json对象功能示例
May 23 jQuery
jQuery使用each遍历循环的方法
Sep 19 jQuery
jQuery实现购物车的总价计算和总价传值功能
Nov 28 jQuery
基于 jQuery 实现键盘事件监听控件
Apr 04 jQuery
jquery登录的异步验证操作示例
May 09 jQuery
jquery实现点击弹出对话框
Feb 08 #jQuery
jQuery实现简易聊天框
Feb 08 #jQuery
jquery添加div实现消息聊天框
Feb 08 #jQuery
jQuery实现聊天对话框
Feb 08 #jQuery
jquery实现聊天机器人
Feb 08 #jQuery
jQuery实现获取多选框的值示例
Feb 07 #jQuery
jQuery操作选中select下拉框的值代码实例
Feb 07 #jQuery
You might like
分享一个超好用的php header下载函数
2014/01/31 PHP
php中的观察者模式简单实例
2015/01/20 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
js实现漫天星星效果
2017/01/19 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
微信小程序版翻牌小游戏
2018/01/26 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
adidas泰国官网:adidas TH
2020/07/11 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
护理职业生涯规划书
2014/01/24 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
会议邀请书范文
2014/02/02 职场文书
语文教育专业求职信
2014/06/28 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
python实现简单反弹球游戏
2021/04/12 Python