Я делаю простое приложение socket.io, которое вы можете увидеть по адресу https://backchannel.glitch.me. Я пытаюсь добавить относительно простой фильтр ненормативной лексики для этого сайта, используя RegExp, но продолжаю сталкиваться с проблемой - вместо отображениясообщение, которое я хочу получить при обнаружении плохого слова, ничего не происходит.Я не очень разбираюсь в JS и регулярных выражениях, поэтому, возможно, я что-то упустил из виду и буду признателен за любую помощь.
мой код:
<!doctype html>
<html>
<head>
<script>
if (location.protocol != 'https:') {
location.href = 'https://backchannel.glitch.me'
}
</script>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" type="image/x-icon" href="https://cdn.glitch.com/a359ff0b-1273-40ab-a005-10968e106f1d%2Fimg_54456.png?1544043684904"/>
<title>Backchannel</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font: 13px Helvetica, Arial; text-align: left; overflow: auto; color: White;}
form { background: #666666; padding: 3px; position: static; bottom: 0; width: 100%; }
form input { padding: 8px; width: 90%; margin-right: .5%;}
form button { width: 9%; background: White; border: none; padding: 9px 8px; }
#messages { list-style-type: none; margin: 0; padding: 0; max-height: 95.7vh; overflow:}
#messages li { padding: 5px 10px; background: none;}
#messages li:nth-child(odd) { background: none; }
main {text-align: center; margin: 0; }
.messageContainer {overflow: auto;}
</style>
<head>
</head>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var audio = new Audio('https://cdn.glitch.com/a359ff0b-1273-40ab-a005-10968e106f1d%2FError-sound.mp3?1544050723783');
$(function () {
var socket = io();
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function(msg){
//if a user types a message containing a "bad word", do not print it and instead print a system message saying it was blocked.
if (msg == new RegExp('*bad words*')) {
$('#messages').append($('<li>').text('[SYSMOD]: Message blocked due to explicit content'));
}
else
$('#messages').append($('<li>').text(' [USER]: ' + msg));
audio.play();
});
//When the server emits " new user connected", add a message which says so.
socket.on('new user', function(msg){
$('#messages').append($('<li>').text('[SYSTEM]: New User Connected'));
audio.play();
});
//When the server emits "user disconnected", add a message which says so.
socket.on('user disconnected', function(msg){
$('#messages').append($('<li>').text('[SYSTEM]: User Disconnected'));
audio.play();
});
});
</script>
<form action="">
<input id="m" autocomplete="off" /><button>Send Message</button>
</form>
</head>
<body background="https://cdn.glitch.com/a359ff0b-1273-40ab-a005-10968e106f1d%2Fspacewinter1.jpg?1545146217248">
<div id="main">
<div class="messageContainer">
<ul id="messages"></ul>
</div>
</div>
</body>
</html>