Модератор форума: JonMagon |
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Антимат для любого модуля (функция замены плохих слов для любых модулей, пример - форум) |
Антимат для любого модуля |
Ой, ребят, от многих антиматов замечена ошибка.
Пишу текст, с большой буквы, дальше пишу мат, происходит действие скрипта, мат заменяется, и у текста ЗАГЛАВНЫЕ буквы становятся маленькими.. Хотелось бы видеть антимат, с блокировкой отправки сообщения или скрипт, за каждый мат -"х" репутации. Да и антимат вообще обходится легко пробелом.. Обидно |
Мой скрипт не меняет регистр и никак не портит сообщение. Кстати насчет самого первого скрипта в этой теме... indexOf не работает с регулярными выражениями, выдает -1. Надо заменить его на search. Можно сделать и с блокировкой отправки, но это 2 отдельных скрипта...
Для форума: Код <script language="javascript"> var mat = /mat0|mat1/igm; //пишем словарь по аналогии document.getElementById("message").setAttribute("onkeypress", "antimat()"); function antimat() { txt = document.getElementById("message").value; if (txt.search(mat)>=0) { document.getElementById("frF16").disabled=1; document.getElementById("frF16").setAttribute("onmousedown", "pop()"); } else { document.getElementById("frF16").disabled=0; document.getElementById("frF16").removeAttribute("onmousedown"); } } function pop() {alert("В сообщении найден мат! Исправьте это, чтобы отправить сообщение.")} //можно заменить текст ошибки </script> Для комментов: Код <script language="javascript"> var mat = /mat0|mat1/igm; //словарь делаем по аналогии document.getElementById("message").setAttribute("onkeypress", "antimat()"); function antimat() { txt = document.getElementById("message").value; if (txt.search(mat)>=0) { document.getElementById("addcBut").disabled=1; document.getElementById("addcBut").setAttribute("onmousedown", "pop()"); } else { document.getElementById("addcBut").disabled=0; document.getElementById("addcBut").removeAttribute("onmousedown"); } } function pop() {alert("В сообщении найден мат! Исправьте это, чтобы отправить сообщение.")} //можно менять текст ошибки </script> Мне первый вариант с заменой больше нравится. Мало ли какой недочет, какое-нибудь заветное сочитание из трех букв в нормальном слове попадется... так хоть известно будет где, а то заблочится кнопка и ищи где оно там. Добавлено (16 Янв 2013, 08:44:21) --------------------------------------------- С повсеместным внедрением новой формы визуального редактирования скрипт потерял актуальность. Он работает только при выключенной новой форме или при включении режима редактирования bb-тегов в самой форме. Поэтому написал скрипт замены мата на самой странице, если кому надо (как в первом посте, только рабочий вариант): Код <script language="javascript"> var mat = /мат0|мат1|мат2/igm; //по аналогии делаем словарь setTimeout('antimat()', 100); function antimat() { txt = document.body.innerHTML; txt = txt.replace(mat, '[мат]'); //в кавычках вставьте свою замену на вкус document.body.innerHTML=txt; } </script> Заменяет все найденные слова без всяких циклов. А цикл или интервал будет постоянно обновлять страницу, вызывая кучу косяков. Скрипт нужно вставлять в самый конец шаблона перед </body> или в самый низ если это шаблон общего вида страниц форума. Сообщение отредактировал starlayt - Среда, 16 Янв 2013, 08:45:24
|
starlayt,
Цитата (starlayt) document.body.innerHTML=txt; ... Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8 Сообщение отредактировал fflesh - Среда, 16 Янв 2013, 09:24:34
|
Господа, всё чаще натыкаюсь на сообщения, что есть какая-то юкозовская фишка для автозамены, кто в курсе? я всё панель облазил - не нашел.
|
Лично я также не рекомендую использовать антиматы, поскольку есть такие слова, в состав которых входит матюк, но сами они нормальные. Например, слово "посчитай" на украинском языке. В русском языке я тоже встречал такое слово, но забыл его. Также я недавно узнал, что слово "лох" имеет множество нормальных значений, например, род деревьев и кустарников. Убедиться в этом можно тут
|
| |||