• Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: JonMagon  
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Антимат для любого модуля (функция замены плохих слов для любых модулей, пример - форум)
Антимат для любого модуля
starlayt
Сообщений: 18
Репутация: 7

Сообщение # 16 | 14:55:57
В опере, хроме и огнелисе последних версий с доктипом и без все работает. Да как же такому велосипеду не работать...
Aura
Сообщений: 33
Репутация: 42

Сообщение # 17 | 01:13:10
Ой, ребят, от многих антиматов замечена ошибка.

Пишу текст, с большой буквы, дальше пишу мат, происходит действие скрипта, мат заменяется, и у текста ЗАГЛАВНЫЕ буквы становятся маленькими..

Хотелось бы видеть антимат, с блокировкой отправки сообщения или скрипт, за каждый мат -"х" репутации.
Да и антимат вообще обходится легко пробелом.. Обидно sad
starlayt
Сообщений: 18
Репутация: 7

Сообщение # 18 | 08:44:21
Мой скрипт не меняет регистр и никак не портит сообщение. Кстати насчет самого первого скрипта в этой теме... 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
fflesh
Сообщений: 1784
Репутация: 1314

Сообщение # 19 | 09:21:58
starlayt,
Цитата (starlayt)
document.body.innerHTML=txt;

facepalm
...

Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8
Сообщение отредактировал fflesh - Среда, 16 Янв 2013, 09:24:34
admin9832
Сообщений: 24
Репутация: 0

Сообщение # 20 | 16:03:35
Не понятно, какой же все-таки скрипт подходит и работает правильно?
DemonBass_Viktor
Сообщений: 7
Репутация: 0

Сообщение # 21 | 07:37:05
Господа, всё чаще натыкаюсь на сообщения, что есть какая-то юкозовская фишка для автозамены, кто в курсе? я всё панель облазил - не нашел.
nemo4430
Сообщений: 68
Репутация: 24

Сообщение # 22 | 13:33:23
Лично я также не рекомендую использовать антиматы, поскольку есть такие слова, в состав которых входит матюк, но сами они нормальные. Например, слово "посчитай" на украинском языке. В русском языке я тоже встречал такое слово, но забыл его. Также я недавно узнал, что слово "лох" имеет множество нормальных значений, например, род деревьев и кустарников. Убедиться в этом можно тут
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » Антимат для любого модуля (функция замены плохих слов для любых модулей, пример - форум)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: