群聊的重新整理可以在後臺 全域性 - 站點功能 - 其他 裡面設定 群聊訊息內容自動重新整理間隔 (秒)
從程式上我們可以看到 模板檔案 ./template/default/home/space_pm.htm 檔案輸出了 js
- <script type="text/javascript">
- var refresh = true;
- var refreshHandle = -1;
- var autorefresh = {$refreshtime};
- </script>
- <script type="text/javascript">
- var msgListObj = $('msglist');
- msgListObj.scrollTop = msgListObj.scrollHeight;
- function succeedhandle_pmsend(url, msg, values) {
- var pObj = document.createElement("p");
- pObj.className = 'xg1 mbn';
- pObj.innerHTML = '<a
href="home.php?mod=space&uid=$_G[uid]" target="_blank"
>$_G[username]</a> '+ "{lang just_now}"; - var pObjmsg = document.createElement("p");
- pObjmsg.className = 'mbm';
- var pmMsg = $('replymessage');
- pObjmsg.innerHTML = bbcode2html(parseurl(pmMsg.value));
- msgListObj.appendChild(pObj);
- msgListObj.appendChild(pObjmsg);
- msgListObj.scrollTop = msgListObj.scrollHeight;
- pmMsg.value = "";
- showCreditPrompt();
- }
- function refreshMsg(refreshnow) {
- if(refresh) {
- if(autorefresh <= 0 || refreshnow){
- var x = new Ajax();
-
x.get('home.php?mod=spacecp&ac=pm&op=showchatmsg&inajax=1&daterange=$daterange&plid=$plid',
function(s){ - msgListObj.innerHTML = s;
- msgListObj.scrollTop = msgListObj.scrollHeight;
- });
- autorefresh = {$refreshtime};
- }
- <!--{if $refreshtime}-->
- $('refreshtip').innerHTML = autorefresh + ' {lang next_refresh}';
- <!--{/if}-->
- autorefresh -= 2;
- } else {
- window.clearInterval(refreshHandle);
- }
- }
- <!--{if $refreshtime}-->
- refreshHandle = window.setInterval('refreshMsg(0);', 2000);
- <!--{/if}-->
- hideMenu();
- </script>
當
使用者發表群聊時,程式透過 ajaxpost 向
home.php?mod=spacecp&ac=pm&op=send&pmid=$pmid&daterange=$daterange&handlekey=pmsend&pmsubmit=yes
地址提交表單
程式 ./source/include/spacecp/spacecp_pm.php 對 post 過來的資料進行處理入庫後返回
home.php?mod=space&do=pm&subop=view&touid='.$touid 到 ajaxpost 中所指的 pmforum_return 物件中類似
- <span
id="pmforum_return"><script type="text/javascript"
reload="1">if(typeof succeedhandle_pmsend=='function')
{succeedhandle_pmsend('home.php?mod=space&do=pm&subop=view&touid=0',
'操作成功 ', {'pmid':'10'});}</script></span>
則 js 執行 succeedhandle_pmsend 將訊息輸出顯示出來
自動獲取短訊息過程是當後臺設定了訊息重新整理的時間 則模板會輸出顯示
- refreshHandle = window.setInterval('refreshMsg(0);', 2000);
即表示 群聊頁會每 2 秒 執行一次 refreshMsg 函式
refreshMsg 函式 每次會在 群聊介面上顯示 autorefresh 秒後重新整理, autorefresh 該值最開始由後臺所設定的重新整理時間賦值
之後 每次遞減 2
當 autorefresh 值 減到 0 時 refreshMsg 執行 ajax 向
home.php?mod=spacecp&ac=pm&op=showchatmsg&inajax=1&daterange=$daterange&plid=$plid
請求
該地址包含的程式 ./source/include/spacecp/spacecp_pm.php 向 uc 介面取出最新的訊息返回到函式
- function(s){
- msgListObj.innerHTML = s;
- msgListObj.scrollTop = msgListObj.scrollHeight;
- }
輸出顯示
同樣使用者可以點選 介面上的 autorefresh 秒後重新整理 字樣的進行手動重新整理獲得最新的群聊訊息