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.load()和Jsp的include的区别
Apr 12 jQuery
jquery拖动改变div大小
Jul 04 jQuery
jquery+css实现简单的图片轮播效果
Aug 07 jQuery
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 jQuery
基于jquery实现左右上下移动效果
May 02 jQuery
jQuery插件实现弹性运动完整示例
Jul 07 jQuery
jquery 通过ajax请求获取后台数据显示在表格上的方法
Aug 08 jQuery
jQuery实现基本动画效果的方法详解
Sep 06 jQuery
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
使用jquery的cookie实现登录页记住用户名和密码的方法
Mar 13 jQuery
jQuery编写QQ简易聊天框
Aug 27 jQuery
jQuery实现回到顶部效果
Oct 19 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
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python struct模块解析
2014/06/12 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
如何整合JQuery和Prototype
2014/01/31 面试题
安全生产检查通报
2014/01/29 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
鉴定评语大全
2014/05/05 职场文书
金融与证券专业求职信
2014/06/22 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
教师节表彰会主持词
2015/07/06 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python