📄 room.js
字号:
if(!dojo._hasResource["dijit.demos.chat.room"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dijit.demos.chat.room"] = true;dojo.provide("dijit.demos.chat.room"); dojo.require("dojox.cometd");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.declare("dijit.demos.chat.Room", [dijit._Widget,dijit._Templated], { _last: "", _username: null, roomId: "public", isPrivate: false, prompt: "Name:", templateString: '<div id="${id}" class="chatroom">' +'<div dojoAttachPoint="chatNode" class="chat"></div>' +'<div dojoAttachPoint="input" class="input">' +'<div dojoAttachPoint="joining">' +'<span>${prompt}</span><input class="username" dojoAttachPoint="username" type="text" dojoAttachEvent="onkeyup: _join"> <input dojoAttachPoint="joinB" class="button" type="submit" name="join" value="Contact" dojoAttachEvent="onclick: _join"/>' +'</div>' +'<div dojoAttachPoint="joined" class="hidden">' +'<input type="text" class="phrase" dojoAttachPoint="phrase" dojoAttachEvent="onkeyup: _cleanInput" />' +'<input type="submit" class="button" value="Send" dojoAttachPoint="sendB" dojoAttachEvent="onclick: _sendPhrase"/>' +'</div>' +'</div>' +'</div>', join: function(name){ if(name == null || name.length==0){ alert('Please enter a username!'); }else{ if(this.isPrivate){ this.roomId = name; } this._username=name; this.joining.className='hidden'; this.joined.className=''; this.phrase.focus(); console.log(this.roomId); dojox.cometd.subscribe("/chat/demo/" + this.roomId, this, "_chat"); dojox.cometd.publish("/chat/demo/" + this.roomId, { user: this._username, join: true, chat : this._username+" has joined the room."}); dojox.cometd.publish("/chat/demo", { user: this._username, joined: this.roomId }); } }, _join: function(/* Event */e){ var key = (e.charCode == dojo.keys.SPACE ? dojo.keys.SPACE : e.keyCode); if (key == dojo.keys.ENTER || e.type=="click"){ this.join(this.username.value); } }, leave: function(){ dojox.cometd.unsubscribe("/chat/demo/" + this.roomId, this, "_chat"); dojox.cometd.publish("/chat/demo/" + this.roomId, { user: this._username, leave: true, chat : this._username+" has left the chat."}); // switch the input form back to login mode this.joining.className=''; this.joined.className='hidden'; this.username.focus(); this._username=null; }, chat: function(text){ // summary: publish a text message to the room if(text != null && text.length>0){ // lame attempt to prevent markup text=text.replace(/</g,'<'); text=text.replace(/>/g,'>'); dojox.cometd.publish("/chat/demo/" + this.roomId, { user: this._username, chat: text}); } }, _chat: function(message){ // summary: process an incoming message if (!message.data){ console.warn("bad message format "+message); return; } var from=message.data.user; var special=message.data.join || message.data.leave; var text=message.data.chat; if(text!=null){ if(!special && from == this._last ){ from="..."; }else{ this._last=from; from+=":"; } if(special){ this.chatNode.innerHTML += "<span class=\"alert\"><span class=\"from\">"+from+" </span><span class=\"text\">"+text+"</span></span><br/>"; this._last=""; }else{ this.chatNode.innerHTML += "<span class=\"from\">"+from+" </span><span class=\"text\">"+text+"</span><br/>"; this.chatNode.scrollTop = this.chatNode.scrollHeight - this.chatNode.clientHeight; } } }, startup: function(){ this.joining.className=''; this.joined.className='hidden'; //this.username.focus(); this.username.setAttribute("autocomplete","OFF"); if (this.registeredAs) { this.join(this.registeredAs); } this.inherited("startup",arguments); }, _cleanInput: function(/* Event */e){ var key = (e.charCode == dojo.keys.SPACE ? dojo.keys.SPACE : e.keyCode); if(key == dojo.keys.ENTER || key == 13){ this.chat(this.phrase.value); this.phrase.value=''; } }, _sendPhrase: function(/* Event */e){ if (this.phrase.value){ this.chat(this.phrase.value); this.phrase.value=''; } }});}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -