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中关于bind()方法的使用技巧分享
Mar 30 jQuery
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
深入理解jquery的$.extend()、$.fn和$.fn.extend()
Jul 08 jQuery
jQuery实现的两种简单弹窗效果示例
Apr 18 jQuery
jQuery实现的点击标题文字切换字体效果示例【测试可用】
Apr 26 jQuery
通过jquery.cookie.js实现记住用户名、密码登录功能
Jun 20 jQuery
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 jQuery
jQuery轮播图功能制作方法详解
Dec 03 jQuery
jQuery实现鼠标移入显示蒙版效果
Jan 11 jQuery
jQuery实现移动端扭蛋机抽奖
Nov 08 jQuery
jQuery实现简单弹幕制作
Dec 10 jQuery
Jquery+javascript实现支付网页数字键盘
Dec 21 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 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
python计数排序和基数排序算法实例
2014/04/25 Python
Python程序员开发中常犯的10个错误
2014/07/07 Python
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
Python3如何判断三角形的类型
2020/04/12 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
区域销售经理岗位职责
2013/12/10 职场文书
30岁生日感言
2014/01/25 职场文书
优秀幼教自荐信
2014/02/03 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
市场营销计划书
2015/01/17 职场文书
教师考核表个人总结
2015/02/12 职场文书