我正在尝试创建一个聊天室网站,现在,当您加载该网站时,您会看到以下输入字段,要求您输入这样的名称: 输入名称并按下旁边的按钮“继续聊天”后,它将使用以下方式设置用户名:
function setUsername() {
var textbox = document.getElementById("name");
var txtboxval = textbox.value;
if(textbox.value.length <= 20 && textbox.value.length >= 4){
socket.emit('setUsername', document.getElementById('name').value);
setCookie("username", txtboxval, 30);
socket.on('userExists', function(data) {
document.getElementById('messages').innerHTML = data;
});
}
else{
alert("Nimen on oltava vähintään 4 kirjainta pitkä");
return false;
}
};
只要符合要求,它就会将名称设置为您输入的名称,并将其显示在您发送的邮件中,还将值设置为cookie。
这将设置用户名,并应检查用户名是否存在:
socket.on('setUsername', function(data) {
console.log(data);
if(users.indexOf(data) > -1) {
socket.emit('userExists', data + ' Username already in use, try another one.');
} else {
users.push(data);
socket.emit('userSet', {username: data});
console.log(users);
}
});
它应该检查数组是否已经存在该名称,但是不存在,在加载cookie后,如果设置了它们,它会自动进入发送消息页面,但是由于找不到消息而将不允许发送消息名称的变量,因为检查器阻止了它的检查。
我需要的是一种在首次设置名称时使检查器工作的方法,该方法可以防止重复,但允许不检查是否已在其中设置了用户数据的cookie。
注意:socket.on函数和setUsername函数在不同的页面上,socket.on位于“ App.js”中,而setUsername和设置cookie的函数位于“ Index.html”中。