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表单验证(简单)
May 23 jQuery
jQuery修改DOM结构_动力节点Java学院整理
Jul 05 jQuery
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
jQuery+CSS实现的table表格行列转置功能示例
Jan 08 jQuery
jQuery md5加密插件jQuery.md5.js用法示例
Aug 24 jQuery
IE8中jQuery.load()加载页面不显示的原因
Nov 15 jQuery
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 jQuery
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
May 04 jQuery
jQuery层叠选择器用法实例分析
Jun 28 jQuery
jQuery实现图片下载代码
Jul 18 jQuery
jQuery 判断元素是否存在然后按需加载内容的实现代码
Jan 16 jQuery
jquery实现垂直手风琴导航栏
Feb 18 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 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
javascript高亮效果的二种实现方法
2008/09/14 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
python通过ssh-powershell监控windows的方法
2015/06/02 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
深入分析python 排序
2020/08/24 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
委托书格式要求
2015/01/28 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
新员工入职感想
2015/08/07 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang
解决golang 关于全局变量的坑
2021/05/06 Golang