Его нужно заменить на те ругательства, которые Вы считаете недопустимыми в Вашем обществе (целиком, либо корни слов), сами слова помещая в кавычки и сохраняя порядок индексов.
Al_H, Вы золото, все работает, большое человеческое спасибо. Очень большое
Отсутствует
Почему на Вы, мы же договорились?
Большое человеческое не за что.
Ради тебя... даже скрипт вдвое длиннее напишу, вот. И даже вдвое медленнее.
Кстати, по поводу скорости. Через некоторое время перепишу скрипт, учитывая идеи Mashа, но побыстрее.
Счастья!
Отсутствует
...Через некоторое время перепишу скрипт, учитывая идеи Mashа, но побыстрее...
Можешь воспользоваться и парочкой моих. Решил тоже поучаствовать
Вот моё "творение": http://forum.mozilla.ru/uploaded/wordsfilter.user.zip.
После установки этого greasemonkey-скрипта не нужно править сам скрипт.
1. Идите в меню: "Инструменты" - "User Script Commands" - "Редактировать список".
2. В открывшейся консоли указываете список слов, требующих замены: одно слово в одной строке. В первой строке указываете слово, которое будет подставляться вместо нежелательных слов. Допускается альтернативная замена: слова в строках, начиная со второй можно писать в формате
3. Закрываете консоль через меню.
p.s. Очевидная проблема всех имеющихся на данный момент в этой ветке скриптов:
Бя<span>ка</span> != Бяка
Скрипт Al_H позволяет "обойти" этот момент, мой скрипт - нет, т. к. не использует innerHTML (и работает без перекодировки).
Отредактировано Anton (05-04-2006 18:11:46)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Давайте-давайте мужики, ваяйте . Потом из этого скрипта можно будет расширение сделать (когда Лия слова добавит туда ).
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1
Отсутствует
p.s. Очевидная проблема всех имеющихся на данный момент в этой ветке скриптов:
Обмануть этот скрипт несложно, можно хоть слово в картинку включить, хоть из слогов сложить абсолютным позиционированием. Сквернословящий человек в любом случае более интеллектуальная система, чем скрипт на 4-108 строчек.
Отсутствует
А давайте все прямо в тему будут слова кидать. Коллективное творчество.
«I actually hate programming, but I love solving problems» © Rasmus Lerdorf, PHP's Creator
Отсутствует
Сразу что-то не сообразил... Можно ещё регулярными выражениями пользоваться. Простой пример: http://forum.mozilla.ru/uploaded/replacers.png
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Мне GM_registerMenuCommand не слишком нравится из-за бага, но решение, конечно же, более юзабельное.
Единственный момент: Al_H, Anton -- вы делаете некоторые вещи в цикле, которые из цикла лучше вынести. Т.е.
(Anton) для каждого текстового узла повторяется расчёт заменяемых слов (split и пр).
(Al_H) присвоение нового значения body.innerHTML
Если вынести за цикл, то бегать будет шустрее, особенно у Al_H.
Отсутствует
Чем хороши скрипты Mash'а и Al_H'а - в них можно написать так
var replacementText="<span style='color: red;'>beeeeep</span>"; var porevo="<span style='color: red;'>beeeeeep</span>";
а можно и картинку вставить вместо слова , в скрипте Anton'а так и выдает <span style='color: red;'>beeeeep</span> вместо beeeeep
а еще у меня почему-то не срабатывает вариант
Отредактировано RcT (06-04-2006 10:58:58)
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1
Отсутствует
Мне GM_registerMenuCommand не слишком нравится из-за бага, но решение, конечно же, более юзабельное...
Мне тоже не нравится, но не только из-за бага, в основном - не очень удобно открывать консоль из меню. Можно добавить кнопки в консоль и <img src="data://... на страницу, но я плохо разбираюсь в строительстве html.
...
а еще у меня почему-то не срабатывает вариант
А у меня работает: http://forum.mozilla.ru/viewtopic.php?pid=95787#p95787.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
О, заработало...
Отредактировано RcT (06-04-2006 17:37:13)
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1
Отсутствует
...Могу помочь с html-разборками...
Основное моё затруднение - консоль. Очень плохо представляю, как её делать правильно и красиво. Сейчас она выглядит так:
<div WordsFilters_console="9a7f3865-d480-422b-9b36-09a3be02bd02" style="position:fixed;top:0px;left:0px;width:100%;height:250px;background-color:white;border-style:solid;border-width:1px;margin:0px;padding:0px;"> <textarea style="width:100%;height:250px;"/> </div>
Не отображается правая граница. Может есть ещё какие-нибудь "неправильности" в html.
Ещё нужен элемент, с помощью которого можно открыть консоль.
Переделал заменяющий код своего скрипта - сейчас работает через innerHTML и в один цикл, а также компилирует регулярные выражения.
Изменения в формате списка:
флаг - любая последовательность символов, если указан флаг, при поиске слова будет учитываться регистр.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Лия
Лови новую версию скрипта http://artproject.spb.ru/images/ext/fil … s-al_h.zip
Спасибо Mash за ценные идеи.
Теперь слова можно вводить в одной строке.
это список запрещенных слов. Его нужно заменить на те ругательства, которые ты считаешь недопустимыми в твоем обществе (целиком, либо корни слов), разделяя слова знаком точка с запятой ; все в одну строчку.
это текст замены, beeeeepbeeeeepbeeeeep можно заменить на что-то другое, по вкусу.
Старый способ:
это массив запрещенных слов. Его нужно заменить на те ругательства, которые ты считаешь недопустимыми в твоем обществе (целиком, либо корни слов), сами слова помещая в кавычки и сохраняя порядок индексов. Если тебе удобнее работать с массивом, а не со строкой, можно добавлять слова так.
Замена слов без учета регистра:
этот переключатель управляет способом замены слов. Поставь true чтобы замена шла без учета регистра.
Внимание! Если установить useRegExpSwitch в true, работа скрипта может ощутимо замедлиться.
Замена слов при помощи регулярных выражений:
на самом деле, этот переключатель позволяет трактовать внесенные слова как регулярные выражения. Это значит, что символы ()?*+[]|^$\\ и в некоторых случаях знак - имеют специальное значение. Если ты хочешь включить их в искомый текст, перед нужным символом необходимо поставить обратную косую черту.
В режиме регулярных выражений можно использовать сочетание .* как любое количество любых символов, .? как возможное наличие любого символа, (вариант 1|вариант 2) для выбора из нескольких вариантов.
Подробнее о регулярных выражениях можно узнать из книги Джефри Фридла, или на сайте http://www.regexp.info/
P.S.: Пункт меню решил пока не использовать.
Отредактировано Al_H (06-04-2006 18:43:28)
Отсутствует
Anton
А у меня с нижней границей проблемы.
А такие стили у вас в браузере как отработают? (Я там как раз проблему нижней границы обошёл)
e1. setAttribute ("style", "position:fixed;top:0px;left:0px;width:90%;height:50%;color:#000;background-color:#fff;border:3px double #666;margin:10% 5%;padding:0;"); ... e2. setAttribute ("style", "width:100%;height:100%;border:none;border-bottom:1px solid #666");
Ещё нужен элемент, с помощью которого можно открыть консоль.
Открыть или закрыть?
Впрочем, неважно, т.к. не получится сделать ни то, ни другое действие, потому что в процессе закрытия/открытия консоли должны использоваться GM_setValue/GM_getValue, а до них уже не достучаться после того, как прикрутили div к body.
Отсутствует
@Anton: это часть содержимого editorSwitchMode()
else { e1 = document. createElement ("div"); e1. setAttribute ("WordsFilters_console", "9a7f3865-d480-422b-9b36-09a3be02bd02"); e1. setAttribute ("style", "position:fixed;top:0px;left:0px;width:90%;height:50%;color:#000;background-color:#fff;border:3px double #666;margin:10% 5%;padding:0;opacity:.96"); e2 = document. createElement ("textarea"); e2. setAttribute ("style", "width:100%;height:100%;border:none;border-bottom:1px solid #666"); e1. appendChild (e2); e2. value = unescape (GM_getValue ("GM_WordsFilter_deprecatedWords", "")). replace (/,/g, "\n"); var e3 = document. createElement ("img"); e3. setAttribute("src", "data:image/gif,GIF89a%0E%00%0E%00%F7%00%00%9F%23%24%A5)*%A5*%2B%7D%25%26%DF%B4%B5%8DKMp%3D%3Fn%3D%3F%5E78%5C67%DC%B0%B2%DE%B4%B5Z%10%14Y%10%14%93%26%2CK%14%17G%13%16u%25*u%26*L%1C%1FN%1D%20%895%3A%896%3AQ%40AiUVhUV%AE%9B%9C%AD%9B%9CV%40B%3F34%3D23%9E%94%95%D4%CB%CCMEF%8D%8E%8E%8C%8D%8D%939-%80NF%7FNF%8BXQ%CA%88%7F%F6%AD%A3%F9%B5%AA%E2%A4%9A%F9%B6%AC%9FC8%A9H%3D%A8H%3D%ABNB%ABNC%AB%60X%FA%9D%93%FA%9E%94%FA%A1%97%FA%A4%99%FA%A8%9F%CD%8A%83%FA%AB%A1%F5%A9%A0%DF%9F%97%7C%12%08%83%1A%10%88%1C%12%8F%25%1B%9B%2F%25%9A.%25%9B1'%A68%2F%A69%2F%D6SI%D2UK%CEUK%E2h%5D%E5i_%DBqh%DFwo%AFd%5D%87UP%EF%98%90%F0%9B%93%8Cb%5E%87_%5B%95%88%87%94%88%87n%09%02u%0C%05v%10%0A%7F%12%0B%88%1B%14%87%1B%14%82%1E%17%C39%2F%AA1)%C080%AA1*%8F.)%CAB%3B%931%2C%C9JA%CCKD%D2QH%CFZR%DCcZ%E0e%5C%DAaZ%D6%60Y%C5c%5D%C5c%5E%D8oh%D8pi%A1(%24%9E)%24%C4A%3B%C7VQ%B3%25%23%B1%26%23%B4(%25%B7)%26%A0%24%24%8376%8187%23%1B%1B%22%1B%1B%8E%7B%7B%8D%7B%7B%7Fvv%99%90%90%98%90%90%9C%95%95%D6%CD%CD%9B%95%95%E5%DE%DE%E6%E0%E0877%C3%C1%C1%CB%CA%CA%C2%C1%C1%84%83%83%83%82%82%CA%CA%CA%BD%BD%BD%BC%BC%BC%8E%8E%8Evvv%3C%3C%3C%13%13%13%FF%FF%FF%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00!%F9%04%01%00%00%92%00%2C%00%00%00%00%0E%00%0E%00%00%08%D1%00%25%09l%F4%08R%A4H%90%1E5%12%C8%D0Q%A1%10%7D%FC%FC%E9%13%A2%90%23%86%23%F4d%D0%00b%10%A1%40%1B0%E4%11!%A9%91%87%04%05%06(%20%B0%40%C1%80%02%08%3A0R4%A1%82%15*Z%D6%A8%D1B%C5%8A%05%0A%89.D%B03%E7J%95%2CX%AA%5C%91%03%40%02%07%08%0E%E8t%11%E3%83%07%0F%1Fc%B6%D4q%F0%A0%81%008d%CC%04%E9%D1%03%C8%99%22%60%0208%E0%E5%08%92!%3F%84%08%F9A%24%89%11.%06%F8%BCI%F3%82D%8B%194Z%90p%81%C6%CD%1ECx%E2%B0%81Q%E3F%0E%1B1%94%94%B9%83H%D2%87%2Fm%9C%E8P%C1%22%C5%93%25a%3E0%04%D4D%06%8A%1D%2Bp09!%88%A1%C0CS%A2%98(%01E%CA%22%86%01%01%00%3B"); e3. addEventListener("click", function(){editorSwitchMode();}, false); e3. setAttribute ("title", "close"); e3. setAttribute ("style", "position:absolute;top:-21px;right:-3px;border:3px double #666;border-bottom:none;background-color:#fff;padding:2px;cursor:pointer;"); e1. appendChild (e3); document. body. insertBefore (e1, document. body. firstChild); }
Отсутствует
@Anton: вроде как нормально всё должно быть. Обновите?
+ нужна ли кнопка на страницу для вызова консоли? Лично моё мнение -- не нужна. Не так уж и часто (после утряски) будет меняться список слов, а эта кнопка будет лишь глаза мозолить.
Отсутствует
Открыть или закрыть?
Открыть.
+ нужна ли кнопка на страницу для вызова консоли?
Может быть, сделать "галочку" на консоли, вроде "Отображать кнопку открытия консоли" и <textarea> для настройки "горячей" клавиши ?
@Anton: это часть содержимого editorSwitchMode()
Здорово ! Я бы так не сумел. Спасибо.
Обновите?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Добавил хоткей, правда, работать будет только с A-z. Нацарапал на коленке, а на доработку сейчас времени нет. Посмотрите: http://forum.mozilla.ru/uploaded/wordsfilter4.zip
В принципе, этого д.б. достаточно. И я таки против кнопки, особенно когда есть горячая клавиша.
Отсутствует
http://forum.mozilla.ru/uploaded/wordsf … n.user.zip
Всё-таки добавил кнопку (по умолчанию не отображается), которую можно перемещать по странице (shift). Изменил анализатор "горячих" клавиш - можно указывать комбинации с Alt, Ctrl и Shift и русские буквы (Ctrl даёт не зависящую от раскладки комбинацию).
Отредактировано Anton (08-04-2006 00:08:08)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует