jQuery實(shí)現(xiàn)簡(jiǎn)單聊天室
自從看了jQuery后,頓時(shí)感覺(jué)其的確很簡(jiǎn)單易學(xué)。下面就一把自己寫(xiě)的一個(gè)簡(jiǎn)易的聊天室程序?qū)懗鰜?lái)。
主要就是利用jQuery的ajax,然后,別的其實(shí)也沒(méi)什么了。先上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() { //重點(diǎn)是這里,從這里向服務(wù)器端發(fā)送數(shù)據(jù)
$.post('chat.php', {
'message': $('#msg').val(),
'name': $('#name').val(),
'timestamp': timestamp
},function(xml) {
$('#msg').val('');
addMessage(xml);
});
return false;
});
$('#name').blur(function (){ //僅僅用來(lái)控制名字輸入框的背景
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) { //從服務(wù)器端更新聊天數(shù)據(jù),并載入吧
$.post('chat.php', {'timestamp': timestamp}, function(xml) {
$('#loading').remove();
addMessage(xml);
});
setTimeout('updateMsg(timestamp);', 1000); //1s刷新一次信息
}
function addMessage(xml) { //解析xml,并添加到頁(yè)面內(nèi)
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 () { //控制滾動(dòng)條一直顯示在底部
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: 移動(dòng)版的,開(kāi)放的聊天室</p>
<footer>
<p>©SamuraiMe</p>
</footer>
</body>
</html>
服務(wù)器端我是用php寫(xiě)的簡(jiǎn)單程序,把產(chǎn)生的xml貼出來(lái)。其實(shí)就是簡(jiǎn)簡(jiǎn)單單給數(shù)據(jù)庫(kù)存數(shù)據(jù)取數(shù)據(jù)的一個(gè)過(guò)程。
<?xml version="1.0" encoding="utf-8"?> <response> <status></status> <timestamp></timestamp> <message> <author></author> <content></content> <time></time> </message> </response>

上面就是最后成品,手機(jī)截圖不方便,就在firefox上截了,效果是一樣的。雖然css寫(xiě)得磕磣了點(diǎn)。但是還是有需要注意的地方。就像圖上'how are you ...'那一大串,如果換成'1111...111'一大串,就會(huì)產(chǎn)生scroll-x,移動(dòng)端好像沒(méi)有出現(xiàn)滾動(dòng)條,消息就看不到了。這怎么能容忍。于是要加
word-wrap: break-word;
本來(lái)我以為要寫(xiě)字符串程序,自己手動(dòng)來(lái)?yè)Q行,有了word-wrap就一句話搞定了。
最后要說(shuō),jQuery的確是簡(jiǎn)單好用,但終究是一個(gè)輕量級(jí)庫(kù),很多事情是完成不了的,就比如讓那個(gè)滾動(dòng)條一直顯示在底部,我就發(fā)現(xiàn)無(wú)法用jQuery完成,也許是我才看jQuery,還沒(méi)找到獲取scrollHeight的方法,最后只能回到不熟悉的js上面去。
var height = document.getElementById('messageWindow').scrollHeight;
if (height > $('#messageWindow').scrollTop()) {
$('#messageWindow').scrollTop(height);
}
差點(diǎn)忘了說(shuō)了。
<meta name="viewport" content="width=device-width"/>
在移動(dòng)端有一個(gè)虛擬可視區(qū)域,比實(shí)際的可視區(qū)域要大一些。第一次在手機(jī)上查看的時(shí)候,總有scroll出現(xiàn),用了這個(gè)meta就可以解決了。
最后,這是我第一篇技術(shù)博客。希望對(duì)看到的人能有所幫助。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于jQuery實(shí)現(xiàn)簡(jiǎn)單人工智能聊天室
- nodejs實(shí)現(xiàn)的一個(gè)簡(jiǎn)單聊天室功能分享
- 使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
- AngularJS+Node.js實(shí)現(xiàn)在線聊天室
- js編寫(xiě)簡(jiǎn)單的聊天室功能
- Ajax PHP JavaScript MySQL實(shí)現(xiàn)簡(jiǎn)易無(wú)刷新在線聊天室
- JavaScript仿聊天室聊天記錄
- Nodejs實(shí)現(xiàn)多房間簡(jiǎn)易聊天室功能
- Node.js中使用socket創(chuàng)建私聊和公聊聊天室
- 基于javascript、ajax、memcache和PHP實(shí)現(xiàn)的簡(jiǎn)易在線聊天室
相關(guān)文章
跟著JQuery API學(xué)Jquery 之三 篩選
跟著JQuery API學(xué)Jquery 之三 篩選,相當(dāng)于條件判斷類型。2010-04-04
Jquery中使用setInterval和setTimeout的方法
有時(shí)候需要在jquery中調(diào)用setInterval和setTimeout,直接在ready中調(diào)用其他方法,會(huì)提示缺少對(duì)象的錯(cuò)誤,解決方法如下2013-04-04
jQuery+slidereveal實(shí)現(xiàn)的面板滑動(dòng)側(cè)邊展出效果
WEB開(kāi)發(fā)中有時(shí)需要在頁(yè)面上設(shè)置一個(gè)控制面板,默認(rèn)是不顯示的,當(dāng)用戶有需要時(shí)可以通過(guò)按鈕觸發(fā)調(diào)用面板展示。常見(jiàn)的有頁(yè)面?zhèn)冗吇雒姘逍Ч?。本文將使用jQuery插件并結(jié)合實(shí)例給大家介紹一下面板滑動(dòng)展示效果。2015-03-03
jquery對(duì)table做排序操作的實(shí)例演示
這篇文章主要介紹了jquery對(duì)table做排序操作的實(shí)例演示,通過(guò)添加自定義屬性data-sort-field-ftime及表頭添加onchange事件詳細(xì)講解了操作過(guò)程,需要的朋友可以參考下2017-08-08
jquery實(shí)現(xiàn)簡(jiǎn)潔文件上傳表單樣式
這篇文章向大家推薦了一款基于jquery實(shí)現(xiàn)的簡(jiǎn)潔文件上傳表單樣式,實(shí)現(xiàn)效果大方精致,極力推薦給大家,希望大家可以喜歡。2015-11-11
jquery實(shí)現(xiàn)炫酷的疊加層自動(dòng)切換特效
這篇文章主要給大家分享的是一則jquery實(shí)現(xiàn)炫酷的疊加層自動(dòng)切換特效,效果非常棒,這里推薦給小伙伴們。2015-02-02
JQuery Tips(2) 關(guān)于$()包裝集你不知道的
包裝集總是面向集合的,需要的朋友可以參考下。2009-12-12
jquery 實(shí)現(xiàn)滾動(dòng)條下拉時(shí)無(wú)限加載的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇jquery 實(shí)現(xiàn)滾動(dòng)條下拉時(shí)無(wú)限加載的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06

