>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Флейм http://forum.mozilla-russia.org/viewforum.php?id=14 >Можно ли написать такой скрипт? http://forum.mozilla-russia.org/viewtopic.php?id=9115 |
Лия > 20-03-2006 13:55:44 |
для Greasemonkey, или не скрипт и не для Greasemonkey, а каким-нибудь другим способом добиться того, чтобы на открываемых страничках |
Al_H > 20-03-2006 15:04:22 |
Можно. Сделать? Только массив ему не буду набивать, потому что матом не ругаюсь. |
ladserg > 20-03-2006 16:03:48 |
Хорошая идея, вместо плохого слова пишется, например, <биип>. Правда только бы словарь плохих слов не догадались бы использовать в плохих целях. А то представляете, заходите на сервер, а там ваш словарь лежит как учебное пособие по мату от вашего имени. Не плохо было бы расширение такое, выделил слово, щёлкнул правой кнопкой, выбрал пункт "Занести слово в чёрный список" и в дальнейшем это слово не отбражается. |
Лия > 20-03-2006 16:15:48 |
Привет, Al_H)
что ж |
krigstask > 20-03-2006 16:23:30 |
Да ладно, это ещё зачем! Я бы себе присвоил все достижения в языкознании! 4-:Е Лия |
Лия > 20-03-2006 16:50:40 |
что тут скажешь |
Al_H > 20-03-2006 17:29:42 |
Сделал, только пока оно работает на латинице, на кириллице - никак. Пробуем дальше. |
Лия > 20-03-2006 17:53:19 |
поддерживаю |
Al_H > 20-03-2006 18:14:09 |
(Al_H смеется) Немножко |
Лия > 20-03-2006 18:32:25 |
да-ну, я даже и через -недельному буду рада
ага, я сразу вспомнила одну из самых популярных на форуме тем: про сохраняемые файлы и их русские имена |
Al_H > 20-03-2006 19:09:44 |
Нет, тут несогласованность кодировки в скрипте и на странице. В скрипте оно вроде бы в Юникоде. |
Лия > 20-03-2006 19:41:55 |
поняла |
ladserg > 20-03-2006 20:24:45 |
Блин, |
Unghost > 20-03-2006 22:27:57 |
ladserg
Я первый |
ladserg > 20-03-2006 22:38:18 |
Unghost |
Al_H > 21-03-2006 10:21:55 |
Ого, какие страсти в обсуждении маленького скрипта. Главное, не поубивайте друг друга, вы нам нужны все и живые. |
Лия > 21-03-2006 17:29:07 |
польщена))) |
Unghost > 21-03-2006 22:00:38 |
Лия |
Mozilla_Xp > 22-03-2006 03:13:12 |
ну да а потом еще скрипт *из мелких 16х16 в большие 1024х768 без потери качества* ! |
e-travel > 22-03-2006 04:04:08 |
Al_H
Можно уже протестировать ? А пожелания принимаются? Если да, то хочу скрипт, считающий сколько какое матерное слово попадалось на форумах, чтобы вычислить самое популярное. |
ladserg > 22-03-2006 07:48:17 |
e-travel |
ladserg > 22-03-2006 07:54:13 |
Unghost |
rurik > 22-03-2006 08:40:45 |
ladserg |
Al_H > 22-03-2006 10:47:55 |
Нет, это я пока сделать не смогу. Выложу на тестирование, когда разберусь с Юникодом. |
ladserg > 22-03-2006 11:00:09 |
rurik Если у тебя стоит squid, и тебе надо резать при помощи прокси разные ресурсы, то я могу скинуть, мне не жалко. |
Лия > 22-03-2006 17:29:54 |
Unghost, ты меня смущщщщаешь))) |
Unghost > 22-03-2006 20:19:44 |
Лия |
rurik > 22-03-2006 21:51:18 |
ladserg |
e-travel > 23-03-2006 04:08:33 |
Al_H
Да я пошутил . Мне такое както и не нужно, если честно. ladserg
Да, и гадать не нужно какое : "I seen Bush prezident on TV, b-e-e-e-p, b-e-e-e-p, b-e-e-e-p..." |
Лия > 23-03-2006 09:45:53 |
Спасибо, Unghost) |
ladserg > 23-03-2006 12:47:39 |
rurik пишет
Ну обширной базой это не назовёшь, лениво выискивать, но если я узнаю куда слать (можно мыло в ПМ послать), вышлю архив с двумя скриптами (4Кб), один файл - скрипт на перле, а второй сама база масок, по которым идёт вырезка. Причём редиректор не вырезает файлы, а просто проверяет URL на соответствие одной из масок и в случае совпадения меняет URL на любой, указанный тобой (у меня это маленкая картинка с текстом "Баннер", представляешь, заходит пользователь на порно сайт, а там вместо каждой картинки загружена с локального сервера моя, и везде написано "Баннер", "Баннер", "Баннер", "Баннер"...) |
krigstask > 23-03-2006 13:01:16 |
ladserg
Лучше бы "порево" 4-:Е |
ladserg > 23-03-2006 13:07:57 |
krigstask |
rurik > 23-03-2006 21:24:13 |
ladserg Да. при наличии фантазии и желания там можно много на что поменять. |
e-travel > 24-03-2006 04:59:57 |
krigstask
Это уже похоже на издевательство какоето . И так бедные юзвери не получат того, чего искали. А над ними еще прикалываются. Еще бы заменять на: "Жесткое порево!" или "Супер клубничка!!!". Так ктото обязательно монитор разобъет |
ladserg > 24-03-2006 12:01:28 |
rurik e-travel МОНТОРЫ НЕ БИТЬ!!! |
krigstask > 24-03-2006 12:06:53 |
"За поревом обращайтесь к администратору/директору/бухгалтеру..." |
rurik > 24-03-2006 12:16:54 |
"Здесь могло бы быть Жесткое порево! Не покажу. Squid. МОНТОР НЕ БИТЬ!!! Он ни в чём не виноват." |
Лия > 24-03-2006 13:16:50 |
ворчу)) |
INFOMAN > 24-03-2006 18:48:21 |
Ага. |
krigstask > 24-03-2006 19:55:13 |
Я бы с радостью, да какой прок от меня (-:Е |
rurik > 24-03-2006 20:02:49 |
Лия |
Al_H > 27-03-2006 21:50:02 |
В общем, в Юникод оно перекодирует и в тексте заменяет... осталось только обратно научиться перекодировать. |
krigstask > 27-03-2006 22:31:33 |
Al_H |
Лия > 28-03-2006 08:39:52 |
Al_H, ты такой молодец, серьезно.)
rurik, я знаю, тут все хорошие) |
Al_H > 28-03-2006 10:32:29 |
Ну, или почти все. Хм, был бы молодец - совсем работало бы. Сегодня еще одну идею проверю. |
Лия > 29-03-2006 11:58:31 |
Упорство и труд, все перетрут © Малюта Скуратов)) |
Al_H > 29-03-2006 12:15:31 |
Неее пентаграммы и тетраграмматоны - это не ко мне. Убеждения не позволяют. |
Al_H > 29-03-2006 12:50:42 |
Лия Внимание! Если редактор неправильный, строка будет выглядеть по-другому, например, так Если не видишь текста нужно закрыть текст без сохранения и найти редактор, который понимает Юникод. то есть слова слово, деёж, нопрст. Ты можешь поставить сколько угодно слов, главное сохранить нумерацию массива. это заменяющее слово, вместо beeeeepbeeeeepbeeeeep тоже можно поставить что-то свое. Маленький совет - лучше сначала поставить скрипт и проверить, работает ли он у тебя, на тексте, содержащем слово "слово". На всякий случай - если твой редактор намудрит что-то с кодировкой, чтобы убедиться, что скрипт хотя бы раньше работал. N.B.! Если редактор спрашивает, в какой кодировке открыть или сохранить, нужно указать UTF-8. Это связано с особенностями хранения строк в JavaScript. Лия, надеюсь, скриптик тебе пригодится. |
Al_H > 29-03-2006 13:10:00 |
P.S.: Добавил файл справки в архив. |
Лия > 29-03-2006 13:36:05 |
И здесь поблагодарю)) |
Al_H > 29-03-2006 14:24:21 |
Это непосредственно версия из архива не работает? Странно, у меня работает, на том посте в том числе. Нужно разбираться... |
Лия > 29-03-2006 14:29:26 |
да, не редактированная |
Al_H > 29-03-2006 14:48:24 |
Какая версия Windows? А Firefox? А Greasemonkey? Попытаюсь восстановить ситуацию. |
Лия > 29-03-2006 15:06:05 |
:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1 пс убежала. до завтра)) |
rurik > 29-03-2006 15:15:00 |
Лия пишет
Попробовал. Ничего не менял. Не работает. |
Mash > 29-03-2006 16:33:10 |
Э-э-э... На обычном html со вполне обычной windows-1251 GM вполне обычно позволяет сделать Выделить код Код:[b]html[/b] Проверка [b]GM.user.js[/b] alert(document.body.innerHTML.replace(/вЕ.ка/i, "______________")); Зачем все эти премудрости с кодировкой? |
rurik > 29-03-2006 16:44:43 |
Mash |
Mash > 29-03-2006 18:05:30 |
Да без разницы. Если на скорую руку, то примерно так это можно представить: Выделить код Код:// ==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; })(); |
Mash > 29-03-2006 18:09:58 |
В этом скрипте слова вводятся пользователем через пробел в переменную words и в дальнейшем они меняются на содержимое переменной porevo. Я специально не стал ничего экранировать, поэтому там можно немного регэкспить в духе и т.д. |
Mash > 29-03-2006 18:11:58 |
Другое дело, что всё это перекликается с темой переносов и не всегда будет "стрелять" так, как надо (Ру-бля, ссы-лок, парикма-херская, Хер-сон, застра-хуйте, манда-рин, пенис-тый, Сер-гей, Сука-чёв). |
Mash > 29-03-2006 18:32:47 |
А по поводу "не работает" я, кажется, понял в чём дело: при установке скрипта GM корёжит от русских букв, поэтому есть такой вариант: |
Al_H > 29-03-2006 18:37:41 |
Так у меня Ваш скрипт не работает, а мой работает. Странно... Вы добились, чтобы какой-нибудь из них у Вас работал? |
Mash > 29-03-2006 18:41:59 |
Хмм,.. интересно. А создавать так, как я описал выше, пробовали? Или даже в этом случае не работает? 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 |
RcT > 29-03-2006 18:43:31 |
У меня скрипт Mash'а не работает, а скрипт Al_H'а работает после замены в скрипта в профиле в папке gm_scripts |
Mash > 29-03-2006 18:46:58 |
Ну, не знаю. У себя пробовал, у меня работает. |
RcT > 29-03-2006 18:51:55 |
Mash |
RcT > 29-03-2006 19:04:41 |
Класс, можно даже несколько списков сделать |
Al_H > 29-03-2006 19:17:11 |
RcT, Mash |
Al_H > 29-03-2006 19:21:27 |
Mash |
Mash > 29-03-2006 19:24:15 |
Al_H Update: ага, опоздал я с ответом. :) |
Al_H > 29-03-2006 19:31:51 |
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 выручил! |
Лия > 30-03-2006 10:01:40 |
ух-ты |
Al_H > 30-03-2006 10:41:28 |
Да не за что! Фактически, Mash предложил интересную идею. Думаю, в итоге нужно будет вводить слова в строку через какой-нибудь разделитель, пробел, или запятую, например. Остается решить проблему с установкой скрипта - нынешние версии обоих скриптов работают только если их пересохранить в Юникоде, причем даже не работают без пересохранения... В идеале скрипт должен ставиться точно так же как обычный. Подумаем. |
Mash > 30-03-2006 11:48:28 |
Al_H Выделить код Код:var words = "\u041f\u0420\u041e\u0412\u0415\u0420\u041a\u0410 \u0421\u0412\u042f\u0417\u0418"; после установки такой скрипт будет шуршать без доработки напильником и даже вне зависимости от кодировки самого скрипта. Может там как-то иначе можно, но сейчас голова другим забита и слабо уже соображает. Но вообще это вопрос больше к разработчикам GM. + не приписываёте мне авторство, пожалуйста; мне не нужна ещё одна головная боль, да и работы по совершенствованию этого скрипта мне не интересны по своим причинам. |
RcT > 30-03-2006 11:55:58 |
Лия и вместо "проверка связи" через пробел пишете нехорошие слова вместо "beeeeeep" пишете на что заменять нехорошие слова Mash пишет
|
Лия > 30-03-2006 13:36:59 |
Al_H
есть за что, есть))) а то вот и Mash пытается сбежать
не отпускайте его, держите держите))
но вообще может мне подождать релиза |
Al_H > 30-03-2006 13:47:04 |
Mash
Это-то я понимаю, именно с этим и борюсь. Объяснять девушке что-то типа "Откройте Штирлиц, перекодируйте текст..." - это неправильно. То есть Лия, конечно, поймет, но я не могу ожидать, что любой пользователь поймет, и в любом случае, это невежливо - требовать от пользователя вводить данные в неестественном формате. У меня есть маленькая идейка, как это ограничение обойти... |
stEp > 30-03-2006 14:27:08 |
Лия
Блокнота вполне достаточно. Когда уже осталось только сохранить скрипт (п.8) выбираете пункт меню Сохранить как..., внизу окна сохранения опцию Кодировка: выставляете в UTF-8, сохраняете. |
Лия > 30-03-2006 15:11:27 |
стыдно |
Al_H > 30-03-2006 15:16:06 |
Не в любой системе. |
Лия > 31-03-2006 12:31:33 |
Как-то все застопорилось (у меня) к сожалению( Установила AkelPad, сохраняю скрипт 72 в кодировке утф 8, открываю папку со скриптами, открываю скрипт - фигня какая-то. Сохраняю туда же в утф 8, открываю снова, снова же кадабра абра. Наверное, что-то делаю не так, что? |
Al_H > 31-03-2006 13:00:38 |
А ты открываешь в правильной кодировке? Попробуй еще другую программку, на которую я ссылку давал. |
Лия > 31-03-2006 13:44:45 |
Что значит в правильной? |
Al_H > 31-03-2006 15:46:22 |
Нужно так. Tools->New User Script, затем при редактировании задаешь ему имя. Открываешь файл в Файрфоксе и устанавливаешь как скрипт. теперь Manage User Scripts, там находишь его, открываешь на редактирование (в Unicode-редакторе), копируешь в него текст скрипта, и сохраняешь, выбрав кодировку для сохранения UTF-8 |
RcT > 31-03-2006 15:56:27 |
Лия пишет
нужно не просто снова сохранить, опять вставить весь скрипт (Ctrl-A Ctrl-V ) в редактор чтобы не было абракадабр, а только потом сохранить в utf-8, потом можно перепроверить, открыть в akelpad, он долже опперделить кодировку (справа в строке статуса в нем она написана) и должно быть все нормально, потом продолжить редактировать строку с заменяемыми словами и опять сохранить (можно просто Save, он сам сохранит в той же кодировке в которой и открыл) |
Лия > 31-03-2006 17:08:41 |
Спасибо вам, RcT и Al_H) |
Mash > 31-03-2006 21:49:04 |
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, т.е. почти в "естественном формате". |
vladmir > 01-04-2006 19:32:48 |
На руборде сегодня тестировать надо, - там щщас такой креатиффффффффффф. |
SOb > 02-04-2006 18:47:20 |
Вот тут предлагают использовать маленькую функцию: Выделить код Код: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('Привет')) Пригодится? P.S.: Проверка производилась в JavaScript Shell 1.3 |
Al_H > 03-04-2006 11:00:10 |
SOb |
Лия > 03-04-2006 14:24:01 |
Не получается у меня с перекодировкой. вот хоть тресни. |
Al_H > 03-04-2006 15:16:35 |
Ты каким редактором пользуешься? Попробуй EditPlus http://www.editplus.com/ - на нем точно работает. |
RcT > 03-04-2006 16:18:09 |
Лия |
Anton > 03-04-2006 18:55:10 |
Al_H пишет
Это же для Greasemonkey скрипт ? Можно же воспользоваться Greasemonkey API - для регистрации пункта меню и сохранения/восстановления данных функции там имеются. |
Al_H > 03-04-2006 19:13:48 |
Странно. Вроде бы этот тот же SciTE, а SciTE у меня перед русским Юникодом спасовал. Или там нужно жестко кодировку прописывать, мне просто разбираться было лениво. |
RcT > 04-04-2006 10:27:19 |
Al_H |
Лия > 04-04-2006 10:42:47 |
Al_H, RcT спасибо большое попробую. |
Al_H > 05-04-2006 11:37:16 |
Лия Установка: Использование: это массив запрещенных слов. Его нужно заменить на те ругательства, которые Вы считаете недопустимыми в Вашем обществе (целиком, либо корни слов), сами слова помещая в кавычки и сохраняя порядок индексов. это текст замены, beeeeepbeeeeepbeeeeep можно заменить на что-то другое, по вкусу. |
Al_H > 05-04-2006 11:38:19 |
P.S.: Редактировать файл можно в любом блокноте, насколько я понимаю. |
krigstask > 05-04-2006 12:17:08 |
Э-э-э... А в Opera как UserJS работать будет? (-:Е |
Лия > 05-04-2006 12:31:24 |
Al_H, Вы золото, все работает, большое человеческое спасибо. Очень большое |
Al_H > 05-04-2006 17:07:57 |
Почему на Вы, мы же договорились? Кстати, по поводу скорости. Через некоторое время перепишу скрипт, учитывая идеи Mashа, но побыстрее. Счастья! |
Anton > 05-04-2006 17:54:58 |
Al_H пишет
Можешь воспользоваться и парочкой моих. Решил тоже поучаствовать Вот моё "творение": http://forum.mozilla.ru/uploaded/wordsfilter.user.zip. После установки этого greasemonkey-скрипта не нужно править сам скрипт. 1. Идите в меню: "Инструменты" - "User Script Commands" - "Редактировать список". 3. Закрываете консоль через меню. p.s. Очевидная проблема всех имеющихся на данный момент в этой ветке скриптов: |
RcT > 05-04-2006 18:14:19 |
Давайте-давайте мужики, ваяйте . Потом из этого скрипта можно будет расширение сделать (когда Лия слова добавит туда ). |
Al_H > 05-04-2006 18:47:28 |
Обмануть этот скрипт несложно, можно хоть слово в картинку включить, хоть из слогов сложить абсолютным позиционированием. Сквернословящий человек в любом случае более интеллектуальная система, чем скрипт на 4-108 строчек. |
stoneflash > 05-04-2006 19:41:28 |
А давайте все прямо в тему будут слова кидать. Коллективное творчество. |
Xeningem > 05-04-2006 19:54:16 |
редиска : нехороший человек |
Anton > 05-04-2006 20:36:35 |
Сразу что-то не сообразил... Можно ещё регулярными выражениями пользоваться. Простой пример: http://forum.mozilla.ru/uploaded/replacers.png |
Al_H > 06-04-2006 10:21:09 |
Mash же предлагал уже регулярными выражениями. |
Mash > 06-04-2006 10:42:36 |
Мне GM_registerMenuCommand не слишком нравится из-за бага, но решение, конечно же, более юзабельное. Единственный момент: Al_H, Anton -- вы делаете некоторые вещи в цикле, которые из цикла лучше вынести. Т.е. (Anton) для каждого текстового узла повторяется расчёт заменяемых слов (split и пр). Если вынести за цикл, то бегать будет шустрее, особенно у Al_H. |
RcT > 06-04-2006 10:57:13 |
Чем хороши скрипты 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 |
Anton > 06-04-2006 14:30:13 |
Mash пишет
Мне тоже не нравится, но не только из-за бага, в основном - не очень удобно открывать консоль из меню. Можно добавить кнопки в консоль и <img src="data://... на страницу, но я плохо разбираюсь в строительстве html. RcT пишет
А у меня работает: http://forum.mozilla.ru/viewtopic.php?pid=95787#p95787. |
Mash > 06-04-2006 14:40:47 |
Anton Ну, давайте доработаем, если есть желание. Могу помочь с html-разборками. Только чуть позже; завтра, скорее всего. |
RcT > 06-04-2006 17:37:02 |
Anton |
Anton > 06-04-2006 18:32:18 |
Mash пишет
Основное моё затруднение - консоль. Очень плохо представляю, как её делать правильно и красиво. Сейчас она выглядит так: Выделить код Код:<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 и в один цикл, а также компилирует регулярные выражения. флаг - любая последовательность символов, если указан флаг, при поиске слова будет учитываться регистр. |
Al_H > 06-04-2006 18:35:06 |
Лия Теперь слова можно вводить в одной строке. это список запрещенных слов. Его нужно заменить на те ругательства, которые ты считаешь недопустимыми в твоем обществе (целиком, либо корни слов), разделяя слова знаком точка с запятой ; все в одну строчку. это текст замены, beeeeepbeeeeepbeeeeep можно заменить на что-то другое, по вкусу. Старый способ: это массив запрещенных слов. Его нужно заменить на те ругательства, которые ты считаешь недопустимыми в твоем обществе (целиком, либо корни слов), сами слова помещая в кавычки и сохраняя порядок индексов. Если тебе удобнее работать с массивом, а не со строкой, можно добавлять слова так. Замена слов без учета регистра: этот переключатель управляет способом замены слов. Поставь true чтобы замена шла без учета регистра. Замена слов при помощи регулярных выражений: на самом деле, этот переключатель позволяет трактовать внесенные слова как регулярные выражения. Это значит, что символы ()?*+[]|^$\\ и в некоторых случаях знак - имеют специальное значение. Если ты хочешь включить их в искомый текст, перед нужным символом необходимо поставить обратную косую черту. Подробнее о регулярных выражениях можно узнать из книги Джефри Фридла, или на сайте http://www.regexp.info/ P.S.: Пункт меню решил пока не использовать. |
Mash > 07-04-2006 12:50:43 |
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 > 07-04-2006 13:03:15 |
Mash пишет
А, нет, вру самым наглым образом. |
Mash > 07-04-2006 13:27:28 |
@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); } |
Mash > 07-04-2006 13:32:26 |
Ну и !important там для всех css-правил было бы неплохо добавить. Тут остаётся один вопрос: как это повлияет на безопасность. Сейчас смотрю. |
Mash > 07-04-2006 13:45:29 |
@Anton: вроде как нормально всё должно быть. Обновите? |
Anton > 07-04-2006 14:25:05 |
Mash пишет
Открыть.
Может быть, сделать "галочку" на консоли, вроде "Отображать кнопку открытия консоли" и <textarea> для настройки "горячей" клавиши ?
Здорово ! Я бы так не сумел. Спасибо.
|
Mash > 07-04-2006 16:19:00 |
Добавил хоткей, правда, работать будет только с A-z. Нацарапал на коленке, а на доработку сейчас времени нет. Посмотрите: http://forum.mozilla.ru/uploaded/wordsfilter4.zip В принципе, этого д.б. достаточно. И я таки против кнопки, особенно когда есть горячая клавиша. |
Anton > 07-04-2006 22:08:42 |
http://forum.mozilla.ru/uploaded/wordsf … n.user.zip |
Mash > 08-04-2006 14:15:13 |
http://forum.mozilla.ru/uploaded/wordsfilter5.user.zip |
Anton > 08-04-2006 22:04:26 |
http://forum.mozilla.ru/uploaded/wordsfilter.user6.zip Сделал мелкие изменения в коде (избавился от многочисленных addEventListener) и нашёл баг, с которым не знаю, что и делать... Суть в том, что скрипт изменяет innerHTML и очень даже запросто может повредить теги или атрибуты. В общем, видятся два пути обхода - textContent или специальные регулярные выражения, не позволяющие изменять теги и их атрибуты. |
Mash > 09-04-2006 14:00:54 |
Выделить код Код:/* 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; Но это М.б. просто ввести ещё одну настройку-чекбокс: "Проводить замену внутри тэгов"? Update: Самый интеллектуальный путь -- позволять проводить замены снаружи тэгов и в некоторых атрибутах (title, alt, ...), но с этим возиться нужно. |
Anton > 09-04-2006 18:04:48 |
А может... оставить, как есть ? Пусть это будет feature. А "бага" обнаружилась на списке beepbeepbeep\n3 когда вызов showLaunchButton() предшествовал обрабоке innerHTML |
Yan > 09-04-2006 18:54:28 |
Поставил wordsfilter.user6.zip - долго не мог понять, почему у меня заменялось абсолютно всё! (И соответственно Firefox ужасно тормозил.) Оказалось, что я случайно после ввода списка автозамены нажал ENTER... Наверное для такого случая стоит предусмотреть защиту "от дурака" -- не один я такой невнимательный. |
Anton > 09-04-2006 19:43:43 |
Yan пишет
Добавил, ссылка на файл в сообщении № 127. ИМХО
Интересный - согласен, удобный - сомневаюсь. |
Лия > 11-04-2006 10:16:49 |
Al_H
Это был мой ответ на -
Большое спасибо. |
Лия > 19-04-2006 14:59:14 |
Ну вот, только я выкроила чуть-чуть времени, решила скачать новую версию скрипта ... и на тебе: "Not Found" |
zilov > 17-11-2007 03:06:14 |
попробовал скрипт Al_H несколько вопросов: добавлено: |
Al_H > 19-11-2007 20:10:09 |
zilov |
zilov > 19-11-2007 22:02:27 |
угу,получилось. а какие мысли по поводу: |
Al_H > 21-11-2007 02:19:21 |
Можно сделать ассоциативный массив |