我有一个socket.IO应用程序,它还将数据保存到MongoDB。
我正在尝试找到一种模糊整个句子的方法,除了最后一个单词。
行所在的代码:
{#storylines}
<li>{text}</li>
{/storylines}
<input id="newstoryline" name="newstoryline" class="StoryBoard" type="text" placeholder="" onKeyDown="countChars()" onKeyUp="countChars()"/>
Socket.IO:
socket.on('updatechat', function (username, data) {
$('#newstoryline').before('<li>' + data + '</li>');
});
应用程序还会向模板发送{maxlines}将包含剩余的行数。基本上我正在寻找一种说法:
if {maxlines}&gt; 0然后模糊'数据'除了最后一个字。
所以如果来自服务器的消息是“你好我的名字是吉姆!”我希望成为“ * * * ** Jim!”所以用户只能看到吉姆这个词!
我正在使用Node.JS / Mongoose / Socket.IO
我是否必须在客户端实现某种javascript功能,以检查{maxlines}&gt; 0然后将模糊效果应用于线条或者我会在服务器端执行某些操作吗?
目前,这是服务器发送信息的方式:
app.get('/s/:id', function(req, res){
Story.findOne({ sid: req.params.id }, function(err, story){
if (err) {
res.redirect('/')
}
else if(story == null) {
res.redirect('/')
}
else{
res.render('story', {
title: 'Storifi',
storytitle: story.title,
storylines: story.lines,
lines: story.maxlines,
storyid: story.sid
maxlines: story.maxlines
});
}
});
});
Socket.IO(服务器端):
socket.on('sendchat', function (data) {
// we tell the client to execute 'updatechat' with 2 parameters
io.sockets.in(socket.room).emit('updatechat', socket.username, data);
答案 0 :(得分:1)
我同意lix。使用span标记包裹您希望模糊的部分,并使用css将样式应用于该标记。
socket.on('updatechat', function (username, data) {
var dataSplit= data.split(' ');
var lastWord = dataSplit.pop();
var toBlur= '<span class="blur">' + dataSplit.join(' ') + '</span>';
$('#newstoryline').before('<li>' + toBlur + lastWord + '</li>');
});
------------------- CSS --------------------------- ------
.blur{
color: transparent;
text-shadow: 0 0 5px #000;
}