Полезная информация

Общайтесь со знакомыми и друзьями в нашей группе в Контакте.

№10105-04-2006 12:17:08

krigstask
друг народа
 
Группа: Members
Откуда: Rampova, Inkerimaa
Зарегистрирован: 13-09-2005
Сообщений: 4593
Веб-сайт

Re: Можно ли написать такой скрипт?

Э-э-э... А в Opera как UserJS работать будет? (-:Е


Ядрёная консоль делает меня сильней!

Отсутствует

 

№10205-04-2006 12:31:24

Лия
-
 
Группа: Members
Зарегистрирован: 09-04-2005
Сообщений: 1878

Re: Можно ли написать такой скрипт?

Его нужно заменить на те ругательства, которые Вы считаете недопустимыми в Вашем обществе (целиком, либо корни слов), сами слова помещая в кавычки и сохраняя порядок индексов.

Al_H, Вы золото, все работает, большое человеческое спасибо. Очень большое:)

Отсутствует

 

№10305-04-2006 17:07:57

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: Можно ли написать такой скрипт?

Почему на Вы, мы же договорились?
Большое человеческое не за что.
Ради тебя... даже скрипт вдвое длиннее напишу, вот. И даже вдвое медленнее.

Кстати, по поводу скорости. Через некоторое время перепишу скрипт, учитывая идеи Mashа, но побыстрее.

Счастья!

Отсутствует

 

№10405-04-2006 17:54:58

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Можно ли написать такой скрипт?

Al_H пишет

...Через некоторое время перепишу скрипт, учитывая идеи 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ентов на части порвет !!!

Отсутствует

 

№10505-04-2006 18:14:19

RcT
Участник
 
Группа: Members
Откуда: Moscow-Ryazan
Зарегистрирован: 19-04-2005
Сообщений: 593
Веб-сайт

Re: Можно ли написать такой скрипт?

Давайте-давайте мужики, ваяйте :rock:. Потом из этого скрипта можно будет расширение сделать (когда Лия слова добавит туда :lol:).


Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061204 GranParadiso/3.0a1

Отсутствует

 

№10605-04-2006 18:47:28

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: Можно ли написать такой скрипт?

p.s. Очевидная проблема всех имеющихся на данный момент в этой ветке скриптов:

Обмануть этот скрипт несложно, можно хоть слово в картинку включить, хоть из слогов сложить абсолютным позиционированием. Сквернословящий человек в любом случае более интеллектуальная система, чем скрипт на 4-108 строчек.

Отсутствует

 

№10705-04-2006 19:41:28

stoneflash
Хитрый Лис
 
Группа: Extensions
Откуда: Msk
Зарегистрирован: 02-04-2006
Сообщений: 4341

Re: Можно ли написать такой скрипт?

:D А давайте все прямо в тему будут слова кидать. Коллективное творчество.:lol:


«I actually hate programming, but I love solving problems» © Rasmus Lerdorf, PHP's Creator

Отсутствует

 

№10805-04-2006 19:54:16

Xeningem
Участник
 
Группа: Members
Зарегистрирован: 08-09-2005
Сообщений: 412

Re: Можно ли написать такой скрипт?

А давайте все прямо в тему будут слова кидать. Коллективное творчество.

редиска : нехороший человек


Everyone is always connected. Serial Experiments Opera.

Отсутствует

 

№10905-04-2006 20:36:35

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Можно ли написать такой скрипт?

Сразу что-то не сообразил... Можно ещё регулярными выражениями пользоваться. Простой пример: http://forum.mozilla.ru/uploaded/replacers.png


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№11006-04-2006 10:21:09

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: Можно ли написать такой скрипт?

Mash же предлагал уже регулярными выражениями.

Отсутствует

 

№11106-04-2006 10:42:36

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Можно ли написать такой скрипт?

Мне GM_registerMenuCommand не слишком нравится из-за бага, но решение, конечно же, более юзабельное.

Единственный момент: Al_H, Anton -- вы делаете некоторые вещи в цикле, которые из цикла лучше вынести. Т.е.

(Anton) для каждого текстового узла повторяется расчёт заменяемых слов (split и пр).
(Al_H) присвоение нового значения body.innerHTML

Если вынести за цикл, то бегать будет шустрее, особенно у Al_H.

Отсутствует

 

№11206-04-2006 10:57:13

RcT
Участник
 
Группа: Members
Откуда: Moscow-Ryazan
Зарегистрирован: 19-04-2005
Сообщений: 593
Веб-сайт

Re: Можно ли написать такой скрипт?

Чем хороши скрипты Mash'а и Al_H'а - в них можно написать так

Выделить код

Код:

var replacementText="<span style='color: red;'>beeeeep</span>";
var porevo="<span style='color: red;'>beeeeeep</span>";

а можно и картинку вставить вместо слова :rock:, в скрипте Anton'а так и выдает <span style='color: red;'>beeeeep</span> вместо beeeeep
а еще у меня почему-то не срабатывает :cry: вариант

Выделить код

Код:

Искомое_слово:Слово_заменитель

Отредактировано 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

Отсутствует

 

№11306-04-2006 14:30:13

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Можно ли написать такой скрипт?

Mash пишет

Мне GM_registerMenuCommand не слишком нравится из-за бага, но решение, конечно же, более юзабельное...

Мне тоже не нравится, но не только из-за бага, в основном - не очень удобно открывать консоль из меню. Можно добавить кнопки в консоль и <img src="data://... на страницу, но я плохо разбираюсь в строительстве html.

RcT пишет

...
а еще у меня почему-то не срабатывает :cry: вариант

Выделить код

Код:

Искомое_слово:Слово_заменитель

А у меня работает: http://forum.mozilla.ru/viewtopic.php?pid=95787#p95787.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№11406-04-2006 14:40:47

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Можно ли написать такой скрипт?

Anton Ну, давайте доработаем, если есть желание. Могу помочь с html-разборками. Только чуть позже; завтра, скорее всего.

Отсутствует

 

№11506-04-2006 17:37:02

RcT
Участник
 
Группа: Members
Откуда: Moscow-Ryazan
Зарегистрирован: 19-04-2005
Сообщений: 593
Веб-сайт

Re: Можно ли написать такой скрипт?

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

Отсутствует

 

№11606-04-2006 18:32:18

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Можно ли написать такой скрипт?

Mash пишет

...Могу помочь с 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 и в один цикл, а также компилирует регулярные выражения.
Изменения в формате списка:

Выделить код

Код:

Искомое_слово:Слово_заменитель:флаг

флаг - любая последовательность символов, если указан флаг, при поиске слова будет учитываться регистр.

http://forum.mozilla.ru/uploaded/wordsfilter2.user.zip


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№11706-04-2006 18:35:06

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: Можно ли написать такой скрипт?

Лия
Лови новую версию скрипта http://artproject.spb.ru/images/ext/fil … s-al_h.zip
Спасибо Mash за ценные идеи.

Теперь слова можно вводить в одной строке.

Выделить код

Код:

var deprecatedTextList='слово;деёж;нопрст';

это список запрещенных слов. Его нужно заменить на те ругательства, которые ты считаешь недопустимыми в твоем обществе (целиком, либо корни слов), разделяя слова знаком точка с запятой ; все в одну строчку.

Выделить код

Код:

var replacementText='beeeeepbeeeeepbeeeeep';

это текст замены, beeeeepbeeeeepbeeeeep можно заменить на что-то другое, по вкусу.

Старый способ:

Выделить код

Код:

deprecatedText[0]='слово';
deprecatedText[1]='деёж';
deprecatedText[2]='нопрст';

это массив запрещенных слов. Его нужно заменить на те ругательства, которые ты считаешь недопустимыми в твоем обществе (целиком, либо корни слов), сами слова помещая в кавычки и сохраняя порядок индексов. Если тебе удобнее работать с массивом, а не со строкой, можно добавлять слова так.

Замена слов без учета регистра:

Выделить код

Код:

var useRegExpSwitch=false;

этот переключатель управляет способом замены слов. Поставь true чтобы замена шла без учета регистра.
Внимание! Если установить useRegExpSwitch в true, работа скрипта может ощутимо замедлиться.

Замена слов при помощи регулярных выражений:

Выделить код

Код:

var useRegExpSwitch=false;

на самом деле, этот переключатель позволяет трактовать внесенные слова как регулярные выражения. Это значит, что символы ()?*+[]|^$\\ и в некоторых случаях знак - имеют специальное значение. Если ты хочешь включить их в искомый текст, перед нужным символом необходимо поставить обратную косую черту.
В режиме регулярных выражений можно использовать сочетание .* как любое количество любых символов, .? как возможное наличие любого символа, (вариант 1|вариант 2) для выбора из нескольких вариантов.

Подробнее о регулярных выражениях можно узнать из книги Джефри Фридла, или на сайте http://www.regexp.info/

P.S.: Пункт меню решил пока не использовать.

Отредактировано Al_H (06-04-2006 18:43:28)

Отсутствует

 

№11807-04-2006 12:50:43

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Можно ли написать такой скрипт?

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");
Anton пишет

Ещё нужен элемент, с помощью которого можно открыть консоль.

Открыть или закрыть?

Впрочем, неважно, т.к. не получится сделать ни то, ни другое действие, потому что в процессе закрытия/открытия консоли должны использоваться GM_setValue/GM_getValue, а до них уже не достучаться после того, как прикрутили div к body.

Отсутствует

 

№11907-04-2006 13:03:15

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Можно ли написать такой скрипт?

Mash пишет

Впрочем, неважно, т.к. не получится сделать ни то, ни другое действие,

А, нет, вру самым наглым образом.
Сейчас сделаем.

Отсутствует

 

№12007-04-2006 13:27:28

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Можно ли написать такой скрипт?

@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);
    }

Отсутствует

 

№12107-04-2006 13:32:26

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Можно ли написать такой скрипт?

Ну и !important там для всех css-правил было бы неплохо добавить.

Тут остаётся один вопрос: как это повлияет на безопасность. Сейчас смотрю.

Отсутствует

 

№12207-04-2006 13:45:29

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Можно ли написать такой скрипт?

@Anton: вроде как нормально всё должно быть. Обновите?
+ нужна ли кнопка на страницу для вызова консоли? Лично моё мнение -- не нужна. Не так уж и часто (после утряски) будет меняться список слов, а эта кнопка будет лишь глаза мозолить.

Отсутствует

 

№12307-04-2006 14:25:05

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Можно ли написать такой скрипт?

Mash пишет

Открыть или закрыть?

Открыть.

+ нужна ли кнопка на страницу для вызова консоли?

Может быть, сделать "галочку" на консоли, вроде "Отображать кнопку открытия консоли" и <textarea> для настройки "горячей" клавиши ?

@Anton: это часть содержимого editorSwitchMode()

Здорово ! Я бы так не сумел. Спасибо.

Обновите?

Обновил: http://forum.mozilla.ru/uploaded/wordsfilter3.zip


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№12407-04-2006 16:19:00

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Можно ли написать такой скрипт?

Добавил хоткей, правда, работать будет только с A-z. Нацарапал на коленке, а на доработку сейчас времени нет. Посмотрите: http://forum.mozilla.ru/uploaded/wordsfilter4.zip

В принципе, этого д.б. достаточно. И я таки против кнопки, особенно когда есть горячая клавиша. ;)

Отсутствует

 

№12507-04-2006 22:08:42

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: Можно ли написать такой скрипт?

http://forum.mozilla.ru/uploaded/wordsf … n.user.zip
Всё-таки добавил кнопку (по умолчанию не отображается), которую можно перемещать по странице (shift). Изменил анализатор "горячих" клавиш - можно указывать комбинации с Alt, Ctrl и Shift и русские буквы (Ctrl даёт не зависящую от раскладки комбинацию).

Отредактировано Anton (08-04-2006 00:08:08)


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]