для Greasemonkey, или не скрипт и не для Greasemonkey, а каким-нибудь другим способом добиться того, чтобы на открываемых страничках
крайние проявления великого и могучего не отображались или закрашивались или ...
в общем, что б их не видно было.
понятно, что благодаря буйному словотворчеству аффтаров, все производные от характерных корней - не учесть
но хоть основные
А?

Можно. Сделать? Только массив ему не буду набивать, потому что матом не ругаюсь.

Хорошая идея, вместо плохого слова пишется, например, <биип>. Правда только бы словарь плохих слов не догадались бы использовать в плохих целях. А то представляете, заходите на сервер, а там ваш словарь лежит как учебное пособие по мату от вашего имени.

Не плохо было бы расширение такое, выделил слово, щёлкнул правой кнопкой, выбрал пункт "Занести слово в чёрный список" и в дальнейшем это слово не отбражается.

Можно. Сделать?

Привет, Al_H)
конечно.
была бы очень признательна, а то притомило уже((
в идеале было бы конечно замечательно, как написал ladserg
но то - идеал
который, как известно недостижим)

Только массив ему не буду набивать, потому что матом не ругаюсь.

что ж
дареному коню и все такое))
ты только тогда объясни пож-та, как добавлять, а я уж надев перчатки и облачившись в белый халат
не ради удовольствия, а ради прогресса))
кааак ...

А то представляете, заходите на сервер, а там ваш словарь лежит как учебное пособие по мату от вашего имени.

Да ладно, это ещё зачем! Я бы себе присвоил все достижения в языкознании! 4-:Е

Лия
Странно, где же это вы вынуждены бродить-то... \-:Е
Мне мало на глаза попадается.

Странно, где же это вы вынуждены бродить-то... \-:Е
Мне мало на глаза попадается.

что тут скажешь
могу только порадоваться за Вас)

Сделал, только пока оно работает на латинице, на кириллице - никак. Пробуем дальше.

поддерживаю
морально
чувствуешь?)))
с 15.00 до 17.00
не отвлекаясь
потом перерыв был пол часа
гарнир готовила
разницу ощутил?)))

(Al_H смеется) Немножко
Что сегодня будет готово, не обещаю. Как ты понимаешь, проблемы с кодировкой.

Что сегодня будет готово, не обещаю.

да-ну, я даже и через -недельному буду рада
и благодарна.)

Как ты понимаешь, проблемы с кодировкой.

ага, я сразу вспомнила  одну из самых популярных на форуме тем: про сохраняемые файлы и их русские имена

Нет, тут несогласованность кодировки в скрипте и на странице. В скрипте оно вроде бы в Юникоде.

Нет, тут несогласованность кодировки в скрипте и на странице. В скрипте оно вроде бы в Юникоде.

поняла
теперь)

Блин,
женщина, знающая что такое юникод, имеет понятие о скриптах, использующая FireFox, нетребовательна... Женился бы...
super.gif

ladserg

Женился бы

Я первый :mad:

Unghost
Я бы вызвал вас на дуэль, ради этой женщины, но т.к. я уже женат на не менее прекрасной даме, и не жалею об этом, то право добиваться руки прекрасной и несравненной г-жи Лии оставляю вам.
:cool:

Ого, какие страсти в обсуждении маленького скрипта. Главное, не поубивайте друг друга, вы нам нужны все и живые.

польщена)))
калым, типа, скрипты и расширения)))

Лия
Скрипт открывающий миниатюрные картинки в полный рост в текущем окне, а не в новом сойдет :) ?

ну да а потом еще скрипт *из мелких 16х16 в большие 1024х768 без потери качества* !:lol:

Al_H

Сделал, только пока оно работает на латинице, на кириллице - никак. Пробуем дальше.

Можно уже протестировать :) ? А пожелания принимаются? Если да, то хочу скрипт, считающий сколько какое матерное слово попадалось на форумах, чтобы вычислить самое популярное.

e-travel
А что, рейтинги и статистика матерных слов в разрезе сайта и всего инета тоже было бы неплохо. Открыл список, посмотрел и удивился разнобразию слов на русском сайте http://***, погрустил и позавидовал заграничному сайту http://###, где матерное слово встречется часто, но оно одно...

Unghost
Могу подкинуть скрипт, вырезающий в прокси сервере Squid порнуху и рекламу...
:cool:

ladserg
А мне можешь кинуть? Если не жалко конечно. :P

чтобы вычислить самое популярное

Нет, это я пока сделать не смогу.

Выложу на тестирование, когда разберусь с Юникодом.

rurik
Так это же обычный скрипт для редиректа к Squid'у, которых в сети полно.

Если у тебя стоит squid, и тебе надо резать при помощи прокси разные ресурсы, то я могу скинуть, мне не жалко.

Скрипт открывающий миниатюрные картинки в полный рост в текущем окне, а не в новом сойдет smile ?

Unghost, ты меня смущщщщаешь)))

Лия
Да нет, просто крутой скрипт. Ради него я поставил GreaseMonkey.
http://shiftingpixel.com/lightbox

ladserg
Так я думаю у тебя сразу с обширной базой (под домашнюю машину). Так что кидай.

Al_H

чтобы вычислить самое популярное

Нет, это я пока сделать не смогу.

Да я пошутил :). Мне такое както и не нужно, если честно.

ladserg

А что, рейтинги и статистика матерных слов в разрезе сайта и всего инета тоже было бы неплохо. Открыл список, посмотрел и удивился разнобразию слов на русском сайте http://***, погрустил и позавидовал заграничному сайту http://###, где матерное слово встречется часто, но оно одно...

Да, и гадать не нужно какое ;): "I seen Bush prezident on TV, b-e-e-e-p, b-e-e-e-p, b-e-e-e-p..."

Спасибо, Unghost)

rurik пишет

ladserg
Так я думаю у тебя сразу с обширной базой (под домашнюю машину). Так что кидай.

Ну обширной базой это не назовёшь, лениво выискивать, но если я узнаю куда слать (можно мыло в ПМ послать), вышлю архив с двумя скриптами (4Кб), один файл - скрипт на перле, а второй сама база масок, по которым идёт вырезка. Причём редиректор не вырезает файлы, а просто проверяет URL на соответствие одной из масок и в случае совпадения меняет URL на любой, указанный тобой (у меня это маленкая картинка с текстом "Баннер", представляешь, заходит пользователь на порно сайт, а там вместо каждой картинки загружена с локального сервера моя, и везде написано "Баннер", "Баннер", "Баннер", "Баннер"...)

ladserg

везде написано "Баннер", "Баннер", "Баннер", "Баннер"...

Лучше бы "порево" 4-:Е

krigstask
Нет сложностей, скрипт написан на перле, измени и будет тебе другая картинка.

ladserg
Пошли на rurikbor<at>gmail<dot>com

Да. при наличии фантазии и желания там можно много на что поменять.

krigstask

...представляешь, заходит пользователь на порно сайт, а там вместо каждой картинки загружена с локального сервера моя, и везде написано "Баннер", "Баннер", "Баннер", "Баннер"...)

Лучше бы "порево" 4-:Е

Это уже похоже на издевательство какоето ;). И так бедные юзвери не получат того, чего искали. А над ними еще прикалываются. Еще бы заменять на: "Жесткое порево!" или "Супер клубничка!!!". Так ктото обязательно монитор разобъет :lol:

rurik
Выслал.

e-travel
Там можно добавить ещё и надпись:

МОНТОРЫ НЕ БИТЬ!!!

:cool:

"За поревом обращайтесь к администратору/директору/бухгалтеру..."

"Здесь могло бы быть Жесткое порево! Не покажу. Squid. МОНТОР НЕ БИТЬ!!! Он ни в чём не виноват."

ворчу))
лучше б помогли Al_Hу с юникодом разобраться и сабжевый скрипт написать

Ага.
Дождешься от них

Я бы с радостью, да какой прок от меня (-:Е

Лия
Не ворчи. Был бы компетентен - помог. А так.... )

В общем, в Юникод оно перекодирует и в тексте заменяет... осталось только обратно научиться перекодировать.

Al_H
Код скрипта задом наперёд записать надо (-:ED

Al_H, ты такой молодец, серьезно.)

Был бы компетентен - помог.

rurik, я знаю, тут все хорошие)

я знаю, тут все хорошие)

Ну, или почти все.

Хм, был бы молодец - совсем работало бы. Сегодня еще одну идею проверю.

Хм, был бы молодец - совсем работало бы. Сегодня еще одну идею проверю.

Упорство и труд, все перетрут © Малюта Скуратов))

Код скрипта задом наперёд

Неее пентаграммы и тетраграмматоны - это не ко мне. Убеждения не позволяют.

Лия
Лови альфа-версию
http://artproject.spb.ru/images/ext/fil … ser.js.zip
Значит, как пользоваться. Открываешь файл в текстовом редакторе, поддерживающем Юникод. Если у тебя такого нет, можно поставить вот этот http://www.editplus.com/ - мой любимый редактор, но он платный.
Там должна быть строка

Выделить код

Код:

var deprecatedText=new Array(),uuuuu=('слово'),reservedText='ñëîâî';

Внимание! Если редактор неправильный, строка будет выглядеть по-другому, например, так

Выделить код

Код:

var deprecatedText=new Array(),uuuuu=('слово'),reservedText='ñëîâî';

Если не видишь текста

Выделить код

Код:

reservedText='ñëîâî';

нужно закрыть текст без сохранения и найти редактор, который понимает Юникод.
На данный момент задано три слова

Выделить код

Код:

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

то есть слова слово, деёж, нопрст. Ты можешь поставить сколько угодно слов, главное сохранить нумерацию массива.

Выделить код

Код:

var replacementText='beeeeepbeeeeepbeeeeep';

это заменяющее слово, вместо beeeeepbeeeeepbeeeeep тоже можно поставить что-то свое.
Все остальное трогать не нужно.

Маленький совет - лучше сначала поставить скрипт и проверить, работает ли он у тебя, на тексте, содержащем слово "слово". На всякий случай - если твой редактор намудрит что-то с кодировкой, чтобы убедиться, что скрипт хотя бы раньше работал.

N.B.! Если редактор спрашивает, в какой кодировке открыть или сохранить, нужно указать UTF-8. Это связано с особенностями хранения строк в JavaScript.

Лия, надеюсь, скриптик тебе пригодится.

P.S.: Добавил файл справки в архив.

И здесь поблагодарю))
Но прежде чем что-то менять, прошу объяснить особо одаренным, как скрипт-то в лису прикрутить?
апд
ага, открыла в нотепаде
вроде все правильно
для того чтобы добавить слово мне просто под уже имеющиеся "deprecatedText" надо вставить этот же самый "deprecatedText" с новым противным словом и изменить нумерацию на единицу
да?
апд ту
угу, как прикрутить скрипт тоже сообразила))
чего-то не хочет работать, хотя скрипт и поставился
%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.JPG
по идее я же в твоем предпоследнем посте
все занесенные в черный список слова не должна видеть
а вместо них должно быть бип, но - увы((

чего-то не хочет работать, хотя скрипт и поставился

Это непосредственно версия из архива не работает? Странно, у меня работает, на том посте в том числе. Нужно разбираться...

Это непосредственно версия из архива не работает?

да, не редактированная

Какая версия Windows? А Firefox? А Greasemonkey? Попытаюсь восстановить ситуацию.

:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1
хр сп 2
обезьянка 0.6.4
я вот чего подумала,
может быть ты положишь на сайт скрипт
как с тултипами тогда сделал
и я попробую заново установить
вдруг я испортила что-нибудь
и еще
может быть флеймящие ранее в этой теме
попробуют себе поставить и отпишутся.

пс убежала. до завтра))

Лия пишет

может быть флеймящие ранее в этой теме
попробуют себе поставить и отпишутся.

Попробовал. Ничего не менял. Не работает.
:::: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1
Suse 10.0
Grasemonkey 0.6.4

Э-э-э... На обычном html со вполне обычной windows-1251 GM вполне обычно позволяет сделать

Выделить код

Код:

[b]html[/b]
Проверка

[b]GM.user.js[/b]
alert(document.body.innerHTML.replace(/вЕ.ка/i, "______________"));

Зачем все эти премудрости с кодировкой?

Mash
А если utf-8?

Да без разницы. Если на скорую руку, то примерно так это можно представить:

Выделить код

Код:

// ==UserScript==
// @description  Description
// ==/UserScript==

(function () {
  // Начало настроек
    // слова-ругательства, через пробел
    var words = "проверка  связи";
    // слово, на которое меняем
    var porevo = "beeeeeep";
  // Конец настроек
  
  var str = document.body.innerHTML;
  words = words.replace(/^\s+/, '')
               .replace(/\s+$/, '')
               .replace(/\s+/, " ")
               .split(" ");
  for each (var word in words)
    str = str.replace(new RegExp(word, "gi"), porevo);
  document.body.innerHTML = str;
})();

В этом скрипте слова вводятся пользователем через пробел в переменную words и в дальнейшем они меняются на содержимое переменной porevo.

Я специально не стал ничего экранировать, поэтому там можно немного регэкспить в духе

Выделить код

Код:

var words = "проверка св.{2}и";

и т.д.

Другое дело, что всё это перекликается с темой переносов и не всегда будет "стрелять" так, как надо (Ру-бля, ссы-лок, парикма-херская, Хер-сон, застра-хуйте, манда-рин, пенис-тый, Сер-гей, Сука-чёв).

А по поводу "не работает" я, кажется, понял в чём дело: при установке скрипта GM корёжит от русских букв, поэтому есть такой вариант:
1) создаём в любом месте файл "test.user.js" с вышеприведённым содержимым;
2) открываем его в Fx
3) если GM установлен, то появится кнопка "Install", жмём её
4) после того, как GM установит этот скрипт, его копия появится в каталоге "gm_scripts" профиля Fx; редактируем эту копию (либо непосредственно находим и правим файл в профиле, либо пользуемся теми возможностями редактирования, которые предоставляет сам GM)
5) пользуемся

Так у меня Ваш скрипт не работает, а мой работает. Странно... Вы добились, чтобы какой-нибудь из них у Вас работал?

Хмм,.. интересно. А создавать так, как я описал выше, пробовали? Или даже в этом случае не работает?

SciTE, GM 0.6.4, Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1

У меня скрипт Mash'а не работает, а скрипт Al_H'а работает после замены в скрипта в профиле в папке gm_scripts

Ну, не знаю. У себя пробовал, у меня работает.

Mash
Вру, перекодировал файл в utf-8 - все заработало

Класс, можно даже несколько списков сделать
Mash и Al_H +1 каждому

RcT, Mash
А, то есть без Юникода все равно не работает. Ясно.

Mash
Все, Ваш у меня тоже заработал. Очень странный эффект, однако, с этой заменой Юникодных скриптов.

Al_H
Без Юникода чего? Страницы? Нет, страница может быть и в 1251, и в utf, и в koi, и в dos... не зависит.

Update: ага, опоздал я с ответом. :)

Mash
Тогда вот так:

Выделить код

Код:

// ==UserScript==
// @name           Word replace by Mash
// @namespace      http://mywebsite.com/myscripts
// @description    Word replace by Mash
// @include        *
// ==/UserScript==

// Начало настроек
// слова-ругательства, через пробел
var words="проверка связи";
// слово, на которое меняем
var porevo="beeeeeep";
// Конец настроек

var str=document.body.innerHTML;
words=words.replace(/^\s+/,'')
           .replace(/\s+$/,'')
           .replace(/\s+/," ")
           .split(" ");
for each (var word in words)
{if(!word.match(/[<>&\"\']/)) str=str.replace(new RegExp(word,"gi"),porevo);}
document.body.innerHTML=str;

Идея хорошая, мне нравится.

P.S.: Опять EditPlus выручил!
P.P.S.: Интересно, можно придумать, чтобы и в Win1251 такая замена работала? Я имею в виду кодировку самого скрипта. Кажется, догадываюсь, как.

ух-ты
да у вас тут сплошной креатив.
здорово
большое всем спасибо за участие
и флеймящим
отозвавшимся на просьбу
тоже
вы только когда все более менее устаканится
дайте мне знать, пожалуйста
и объясните
как в модернизированных версиях
слова прописывать
а то я ничаво ни панемаю уже))

Да не за что!

Фактически, Mash предложил интересную идею. Думаю, в итоге нужно будет вводить слова в строку через какой-нибудь разделитель, пробел, или запятую, например.

Остается решить проблему с установкой скрипта - нынешние версии обоих скриптов работают только если их пересохранить в Юникоде, причем даже не работают без пересохранения... В идеале скрипт должен ставиться точно так же как обычный. Подумаем.

Al_H
Как вариант:
можно убрать не-англицкие символы из .user.js и писать что-то вроде

Выделить код

Код:

var words = "\u041f\u0420\u041e\u0412\u0415\u0420\u041a\u0410 \u0421\u0412\u042f\u0417\u0418";

после установки такой скрипт будет шуршать без доработки напильником и даже вне зависимости от кодировки самого скрипта.
Недостатки очевидны.

Может там как-то иначе можно, но сейчас голова другим забита и слабо уже соображает.

Но вообще это вопрос больше к разработчикам GM.

+ не приписываёте мне авторство, пожалуйста; мне не нужна ещё одна головная боль, :) да и работы по совершенствованию этого скрипта мне не интересны по своим причинам.

Лия
1. Открываете текстовый редактор, который поддерживает utf-8
2. Из поста номер 72 копируете код и вставляете в редактор, затем сохраняете в кодировке utf-8 под именем test.user.js
3. Устанавливаете в GM
4. В папке профиля находите папку "gm_scripts", там находите ващ только что установленный скрипт, он будет называться wordreplacebymash.user.js
5. Открываете его в текстовом редакторе, если содержимое там не похоже на код в посте 72, аопиреуте его опять туда и сохраняете в utf-8
6. Находите строку

Выделить код

Код:

var words="проверка связи";

и вместо "проверка связи" через пробел пишете нехорошие слова
7. В строке

Выделить код

Код:

var porevo="beeeeeep";

вместо "beeeeeep" пишете на что заменять нехорошие слова
8. Сохраняете
9. Пользуетесь
P.S. чем больше слов в words тем тормознее будет работать, но

Mash пишет

там можно немного регэкспить в духе

Выделить код

Код:

var words = "проверка св.{2}и";

Al_H

Да не за что!...Подумаем.

есть за что, есть))) а то вот и Mash пытается сбежать

не приписываёте мне авторство...да и работы по совершенствованию этого скрипта мне не интересны по своим причинам.

не отпускайте его, держите держите))
RcT, спасибо большое)
объяснение на пальцах
это как раз то, что мне нужно
поэтому все поняла
кроме последней
процитированной Вами
загадочной фразы

там можно немного регэкспить в духе

но вообще может мне подождать релиза
или как?
кстати насчет тормозов, а сильно будет тормозить?.
А то у меня и так связь такая, что когда о ней думаю, впору этот самый скрипт применять))
апд
нда-а
с "на пальцах" это я явно погарячилась
как сохранить в utf-8 я даже и не представляю((
у меня есть блокнот и есть вордпад
и усе
буду ждать релиза что ли, выбора то нет((

Mash

Как вариант:
можно убрать не-англицкие символы из .user.js и писать что-то вроде

Это-то я понимаю, именно с этим и борюсь. Объяснять девушке что-то типа "Откройте Штирлиц, перекодируйте текст..." - это неправильно. То есть Лия, конечно, поймет, но я не могу ожидать, что любой пользователь поймет, и в любом случае, это невежливо - требовать от пользователя вводить данные в неестественном формате.

У меня есть маленькая идейка, как это ограничение обойти...

Лия

как сохранить в utf-8 я даже и не представляю((
у меня есть блокнот и есть вордпад

Блокнота вполне достаточно. Когда уже осталось только сохранить скрипт (п.8) выбираете пункт меню Сохранить как..., внизу окна сохранения опцию Кодировка: выставляете в UTF-8, сохраняете.

стыдно
спасибо, stEp)
но вот не удается мне заставить его выглядеть как в посте ном 72
кириллица упорно превращается  в абракадабру, хотя, как и написал RcT, открывала из профиля, опять выставляла утф8 и сохраняла.
увы
ладно, завтра Al_H мне обещал эксклюзивную рекомендацию по спец связи))
может тогда что-нибудь выйдет

Блокнота вполне достаточно.

Не в любой системе.
Лия
Лучше что-то специализированное, вроде такого http://www.esperanto.mv.ru/UniRed/RUS/index.html или вот такого http://akelpad.net.ru/download.shtml .

Как-то все застопорилось (у меня) к сожалению( Установила AkelPad, сохраняю скрипт 72 в кодировке утф 8, открываю папку со скриптами, открываю скрипт - фигня какая-то. Сохраняю туда же в утф 8, открываю снова, снова же кадабра абра. Наверное, что-то делаю не так, что?

А ты открываешь в правильной кодировке? Попробуй еще другую программку, на которую я ссылку давал.

А ты открываешь в правильной кодировке?

Что значит в правильной?
В общем, я делаю все так (почти), как написал RcT. Последовательность действий такова:
Копирую текст скрипта из поста номер 72
Открываю акелпад, вставляю туда текст, выбираю: сохранить в утф 8 под именем test.user.js, на рабочий стол.
Простым перетаскиванием устанавливаю скрипт, открывается вкладка гм, инсталлю, перезагружаю браузер.
Открываю папку gm_scripts, открываю скрипт в акелпаде - абракадабра. Выбираю - сохранить в утф 8, сохраняю.
Не работает, открываю его опять, опять абра дабра ка.
Что я делаю не так и как нужно делать?
А первую, из посоветованных тобой программ (спасибо), я скачать не могу, ибо не в состоянии на открывающейся по ссылке странице, найти ссылку на загрузку.

Нужно так. Tools->New User Script, затем при редактировании задаешь ему имя. Открываешь файл в Файрфоксе и устанавливаешь как скрипт. теперь Manage User Scripts, там находишь его, открываешь на редактирование (в Unicode-редакторе), копируешь в него текст скрипта, и сохраняешь, выбрав кодировку для сохранения UTF-8

Лия пишет

Открываю папку gm_scripts, открываю скрипт в акелпаде - абракадабра. Выбираю - сохранить в утф 8, сохраняю.

нужно не просто снова сохранить, опять вставить весь скрипт (Ctrl-A Ctrl-V ) в редактор чтобы не было абракадабр, а только потом сохранить в utf-8, потом можно перепроверить, открыть в akelpad, он долже опперделить кодировку (справа в строке статуса в нем она написана) и должно быть все нормально, потом продолжить редактировать строку с заменяемыми словами и опять сохранить (можно просто Save, он сам сохранит в той же кодировке в которой и открыл)

Спасибо вам, RcT и Al_H)
Завтра обязательно попробую, сегодня уже сил никаких нет и нервОв не хватает)
Если честно, то очень хочется релиза, что бы зашел, поставил и никаких проблем

Al_H
М.б. что-то в таком духе слепить?

Выделить код

Код:

// ==UserScript==
// @description  Description
// ==/UserScript==

(function () {
  var words = GM_getValue("words", "__3anoJIHu__MeHJa__");
  var porevo = GM_getValue("porevo", "beeeeeeep");
  
  if (porevo == "beeeeeeep")
    GM_setValue("porevo", "beeeeeeep");
  
  if (words == "__3anoJIHu__MeHJa__")
    return GM_setValue("words", words);
  
  function _c(_str,x,y,z) {
    var const208 = String.fromCharCode(x);
    var const896 = x==208 ? 896 : 960;
    for (var i = y, j = y + z; i < j; i++)
      _str = _str.replace(new RegExp(const208 + String.fromCharCode(i), "g"),
                              String.fromCharCode(i+const896));
    return _str;
  }
  
  function uConvert(_str) {
    return _c(_c(_c(_c(_str,
                        209,145,1), // yo
                        209,128,16),// Cyrillic Small letters
                        208,129,1), // YO
                        208,144,48);// Cyrillic Capital letters
  }
  
  words = uConvert(words);
  porevo = uConvert(porevo);
  
  var str = document.body.innerHTML;
  words = words.replace(/^\s+/, '')
               .replace(/\s+$/, '')
               .replace(/\s+/, " ")
               .split(" ");
  for each (var word in words)
    str = str.replace(new RegExp(word, "gi"), porevo);
  
  document.body.innerHTML = str;
})();

Пользователь будет менять слова через about:config, т.е. почти в "естественном формате".

На руборде сегодня тестировать надо, - там щщас такой креатиффффффффффф.

Вот тут предлагают использовать маленькую функцию:

Выделить код

Код:

function convert(str){
  function conChar(ch){
   if (/[-_.!~*'()]/.test(ch)) return ch
   if (ch==' ') return '+'
   return escape(ch)
  }
strArr=str.split('')
for (i=0;i<str.length;i++)
  strArr[i]=conChar(strArr[i])
return strArr.join('')
}

Проверка: print(convert('Привет'))
Результат: %u041F%u0440%u0438%u0432%u0435%u0442

Пригодится?

P.S.: Проверка производилась в JavaScript Shell 1.3

SOb
escape/unescape я знаю, тут наверное другое нужно.

Не получается у меня с перекодировкой. вот хоть тресни.
Бывает же такое - упрешься и не с места, и ведь понятно, что какую-то мелочь упускаешь, но какую именно не разберешь.
А как у вас дела, есть надежда на?:)

Ты каким редактором пользуешься? Попробуй EditPlus http://www.editplus.com/ - на нем точно работает.

Лия
Я пользуюсь Notepad++ http://notepad-plus.sourceforge.net/ru/site.htm

Al_H пишет

...требовать от пользователя вводить данные в неестественном формате...

Это же для Greasemonkey скрипт ? Можно же воспользоваться Greasemonkey API - для регистрации пункта меню и сохранения/восстановления данных функции там имеются.

Я пользуюсь Notepad++

Странно. Вроде бы этот тот же SciTE, а SciTE у меня перед русским Юникодом спасовал. Или там нужно жестко кодировку прописывать, мне просто разбираться было лениво.

Al_H
Незнаю, notepad_plus.png
а потом пишем по-русски и сохраняем

Al_H, RcT спасибо большое попробую.:iron:

Лия
Попробуй новую версию
http://artproject.spb.ru/images/ext/fil … s-al_h.zip или http://artproject.spb.ru/images/ext/fil … s-al_h.rar
Обрати внимание, процедура установки изменилась.

Установка:
1. Открой скрипт в Firefox с установленным Greasemonkey и нажми Install
Примечание: на данном этапе Greasemonkey копирует скрипт в свою папку, подключает его и перекодирует в Latin-1, заменяя столь необходимую нам кириллицу на что-нибудь вроде ээээээ. В таком виде скрипт не работает.
2. Найди папку своего профиля (обычно это в Win98 папка C:\Windows\Application Data\Mozilla\Firefox\Profiles\*.имя_профиля\ или C:\Windows\Profiles\Имя_профиля_пользователя_Windows\Application Data\Mozilla\Firefox\Profiles\*.имя_профиля\ а в WinXP C:\Documents and Settings\Имя_профиля_пользователя_Windows\Application Data\Mozilla\Firefox\Profiles\*.имя_профиля\) и в ней папку gm_scripts\. Скопируй в нее этот же скрипт, заменив находящийся там файл.
Примечание: поскольку перекодирование происходит только на этапе установки, после данной операции файл должен быть в исходной кодировке.

Использование:

Выделить код

Код:

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

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

Выделить код

Код:

var replacementText='beeeeepbeeeeepbeeeeep';

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

P.S.: Редактировать файл можно в любом блокноте, насколько я понимаю.

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

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

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

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

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

Счастья!

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 (и работает без перекодировки).

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

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

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

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

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

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

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

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

Мне 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>";

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

Выделить код

Код:

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

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

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

RcT пишет

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

Выделить код

Код:

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

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

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

Anton
О, заработало...

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

Лия
Лови новую версию скрипта 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.: Пункт меню решил пока не использовать.

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.

Mash пишет

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

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

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

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

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

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

Mash пишет

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

Открыть.

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

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

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

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

Обновите?

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

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

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

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

http://forum.mozilla.ru/uploaded/wordsfilter5.user.zip
1) вынес src картинок (просто для улучшения читаемости кода);
2) поковырял addEventListener("mousemove") -- теперь корзинка не должна уползти за пределы экрана.
Остальное времени нет смотреть, вроде как работает. Руки так и чешутся что-нибудь улучшить, но в целом -- good work. ;)

http://forum.mozilla.ru/uploaded/wordsfilter.user6.zip

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

Выделить код

Код:

/* do replaces */
var s = document. body. innerHTML;

// cut tags
var mark = "\xF0\xF0\xF0\xF0", tagsReg = /<[^>]+>/gi;
var tagsArray = s. match(tagsReg);
s = s. replace(tagsReg, mark);

// replace words
for each (var j in deprecatedText)
  s = s. replace (j [0], j [1]);

// paste tags
for each (var j in tagsArray)
  s = s. replace(mark, j);

document. body. innerHTML = s;

Можно ещё даже поизголяться в духе

Выделить код

Код:

tagsReg =  /(<\/?[a-z0-9]+(\s+([a-z\-]+(=((\'[^\']*\')|(\"[^\"]*\")|([0-9@\-_a-z:\/?&=\.]+)))?)?)*\/?>)/gi;

Но это те же я... тот же textContent. Впрочем, отличительная особенность его будет заключаться в том, что можно будет использовать тэги при замене.

М.б. просто ввести ещё одну настройку-чекбокс: "Проводить замену внутри тэгов"?

Update: Самый интеллектуальный путь -- позволять проводить замены снаружи тэгов и в некоторых атрибутах (title, alt, ...), но с этим возиться нужно.

М.б. просто ввести ещё одну настройку-чекбокс: "Проводить замену внутри тэгов"?

А может... оставить, как есть ? Пусть это будет feature. А "бага" обнаружилась на списке beepbeepbeep\n3 когда вызов showLaunchButton() предшествовал обрабоке innerHTML ;)

Поставил wordsfilter.user6.zip - долго не мог понять, почему у меня заменялось абсолютно всё! (И соответственно Firefox ужасно тормозил.) Оказалось, что я случайно после ввода списка автозамены нажал ENTER... Наверное для такого случая стоит предусмотреть защиту "от дурака" -- не один я такой невнимательный.
А в целом получился очень интересный и удобный скрипт. Жаль только, что замена производится по onload, а не в процессе загрузки, но от этого наверное никуда не деться.

Yan пишет

...защиту "от дурака"...

Добавил, ссылка на файл в сообщении № 127.

ИМХО

...интересный и удобный скрипт...

Интересный - согласен, удобный - сомневаюсь.

Al_H

Почему на Вы, мы же договорились?

Это был мой ответ на -

которые Вы считаете недопустимыми

:puss:

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

Большое спасибо.
На самом деле я понимаю, что это прозвучит, не очень вежливо, но сейчас, к сожалению, совсем нет времени, прошу прощения:) поэтому массу вопросов, которые возникли в связи с новыми разработками и твоей и Антона и Mash:) - задам попозже, если можно.

Ну вот, только я выкроила чуть-чуть времени, решила скачать новую версию скрипта ... и на тебе: "Not Found":(

попробовал скрипт Al_H

несколько вопросов:
1.текст замены латиницей набирать? вместо кирилицы кракозябры
2.как сделать,чтобы каждое слово имело свою замену,а не общую?
3.с NoScript глючить не будет?

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

zilov
Вы, очевидно, редактировали файл в не-UTF-виде, JavaScript этого не любит.

редактировали файл в не-UTF-виде

угу,получилось.

а какие мысли по поводу:
как сделать,чтобы каждое слово имело свою замену,а не общую?

Можно сделать ассоциативный массив