寻找高手给一小段js代码添加点注释,实在看得辛苦
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns= "http://www.w3.org/1999/xhtml ">
<head>
<title> JSJaC Simple Client </title>
<script type= "text/javascript " src= "../jsjac.js "> </script>
<!-- comment in above and uncomment below if you want to modify/hack
on jsjac -->
<!--script type= "text/javascript " src= "../src/JSJaC.js "> </script-->
<!-- if you want to enable debugging uncomment line below
debugger available at
http://svn.stefan-strigler.de/JSDebugger/trunk -->
<!--script type= "text/javascript " src= "Debugger.js "> </script-->
<script language= "JavaScript " type= "text/javascript ">
// <![CDATA[
function handleIQ(aJSJaCPacket) {
document.getElementById( 'iResp ').innerHTML +=
" <div class= 'msg '> IN (raw): " +aJSJaCPacket.xml().htmlEnc() + ' </div> ';
document.getElementById( 'iResp ').lastChild.scrollIntoView();
}
function handleMessage(aJSJaCPacket) {
var html = ' ';
html += ' <div class= "msg "> <b> Received Message from '+aJSJaCPacket.getFromJID()+ ': </b> <br/> ';
html += aJSJaCPacket.getBody().htmlEnc() + ' </div> ';
document.getElementById( 'iResp ').innerHTML += html;
document.getElementById( 'iResp ').lastChild.scrollIntoView();
}
function handlePresence(aJSJaCPacket) {
var html = ' <div class= "msg "> ';
if (!aJSJaCPacket.getType() && !aJSJaCPacket.getShow())
html += ' <b> '+aJSJaCPacket.getFromJID()+ ' has become available. </b> ';
else {
html += ' <b> '+aJSJaCPacket.getFromJID()+ ' has set his presence to ';
if (aJSJaCPacket.getType())
html += aJSJaCPacket.getType() + '. </b> ';
else
html += aJSJaCPacket.getShow() + '. </b> ';
if (aJSJaCPacket.getStatus())
html += ' ( '+aJSJaCPacket.getStatus().htmlEnc()+ ') ';
}
html += ' </div> ';
document.getElementById( 'iResp ').innerHTML += html;
document.getElementById( 'iResp ').lastChild.scrollIntoView();
}
function handleError(e) {
document.getElementById( 'err ').innerHTML = "An error occured: <br /> "+
( "Code: "+e.getAttribute( 'code ')+ "\nType: "+e.getAttribute( 'type ')+
"\nCondition: "+e.firstChild.nodeName).htmlEnc();
document.getElementById( 'login_pane ').style.display = ' ';
document.getElementById( 'sendmsg_pane ').style.display = 'none ';
if (con.connected())
con.disconnect();
}
function handleStatusChanged(status) {
oDbg.log( "status changed: "+status);
}
function handleConnected() {
document.getElementById( 'login_pane ').style.display = 'none ';
document.getElementById( 'sendmsg_pane ').style.display = ' ';
document.getElementById( 'err ').innerHTML = ' ';
con.send(new JSJaCPresence());
}
function handleDisconnected() {
document.getElementById( 'login_pane ').style.display = ' ';
document.getElementById( 'sendmsg_pane ').style.display = 'none ';
}
function doLogin(aForm) {
document.getElementById( 'err ').innerHTML = ' '; // reset
try {
// setup args for contructor
oArgs = new Object();
oArgs.httpbase = aForm.http_base.value;
oArgs.timerval = 2000;
if (typeof(oDbg) != 'undefined ')
oArgs.oDbg = oDbg;
if (aForm.backend[0].checked)
con = new JSJaCHttpBindingConnection(oArgs);
else
con = new JSJaCHttpPollingConnection(oArgs);
con.registerHandler( 'message ',handleMessage);
con.registerHandler( 'presence ',handlePresence);
con.registerHandler( 'iq ',handleIQ);
con.registerHandler( 'onconnect ',handleConnected);
con.registerHandler( 'onerror ',handleError);
con.registerHandler( 'status_changed ',handleStatusChanged);
con.registerHandler( 'ondisconnect ',handleDisconnected);
// setup args for connect method
oArgs = new Object();
oArgs.domain = aForm.server.value;
oArgs.username = aForm.username.value;
oArgs.resource = 'jsjac_simpleclient ';
oArgs.pass = aForm.password.value;
oArgs.register = aForm.register.checked;
con.connect(oArgs);
} catch (e) {
document.getElementById( 'err ').innerHTML = e.toString();
} finally {
return false;
}
}
function sendMsg(aForm) {
if (aForm.msg.value == ' ' || aForm.sendTo.value == ' ')
return false;
if (aForm.sendTo.value.indexOf( '@ ') == -1)
aForm.sendTo.value += '@ ' + con.domain;
try {
var aMsg = new JSJaCMessage();
aMsg.setTo(new JSJaCJID(aForm.sendTo.value));
aMsg.setBody(aForm.msg.value);
con.send(aMsg);
aForm.msg.value = ' ';
return false;
} catch (e) {
html = " <div class= 'msg error ' '> Error: "+e.message+ " </div> ";
document.getElementById( 'iResp ').innerHTML += html;
document.getElementById( 'iResp ').lastChild.scrollIntoView();
return false;
}
}
function quit() {
if (con && con.connected())
con.disconnect();
document.getElementById( 'login_pane ').style.display = ' ';
document.getElementById( 'sendmsg_pane ').style.display = 'none ';
}
(未完)
[解决办法]
晕 这么长 你自己看吧
[解决办法]
..
[解决办法]
init
1 初始化一些东西
调用 setupCon ,绑定一些消息处理函数,那些 handle xxx 就是被绑定用于处理服务器返回数据的。
2 判断是否登录过,如果是就隐藏登录界面,显示发送消息界面。
登录界面中登录按钮触发 doLogin,用于登录
消息界面中发送按钮触发 sendMsg,用于发送消息。
[解决办法]
路过,关注一下