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使用unlock.js插件实现滑动解锁
Apr 04 jQuery
vue中如何引入jQuery和Bootstrap
Apr 10 jQuery
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
May 08 jQuery
jQuery Validate表单验证插件实现代码
Jun 08 jQuery
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
jQuery获取table表中的td标签(实例讲解)
Jul 28 jQuery
jQuery zTree 异步加载添加子节点重复问题
Nov 29 jQuery
jquery手机触屏滑动拼音字母城市选择器的实例代码
Dec 11 jQuery
jQuery中将json数据显示到页面表格的方法
May 27 jQuery
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
jquery简单实现纵向的无缝滚动代码实例
Apr 01 jQuery
jQuery实现查看图片功能
Dec 01 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
优化innerHTML操作(提高代码执行效率)
2011/08/20 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
Python获取远程文件大小的函数代码分享
2014/05/13 Python
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
对Python实现累加函数的方法详解
2019/01/23 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
教师考核材料
2014/05/21 职场文书
中学生运动会口号
2014/06/07 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
卫生主题班会
2015/08/14 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
Spring实现内置监听器
2021/07/09 Java/Android
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript