После перехода на FF 1.5 beta перестала работать greasemonkey. В консоли пишет

Error: uncaught exception: [Exception... "Unexpected error"  nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)"  location: "JS frame :: chrome://greasemonkey/content/dochandler.js :: anonymous :: line 264"  data: no]

Тестировал на различных сборках от первой до второй беты, везде аналогично... :(

Кто-нибудь победил эту засаду?

http://userscripts.org/greasemonkey-0.6.2.xpi

Спасибо, н почему ее на http://greasemonkey.mozdev.org не выкладывают?

alc
Потому что оно еще бета.
http://greaseblog.blogspot.com/2005/09/firefox-15-compatible-greasemonkey.html

Кстати, GM для 1.5 обновился до версии 0.6.3. Ни на сайте, ни на GreaseBlog'е про это ни слова не было. Случайно увидел в maillist'е. Брать тут.

Выделить код

Код:

So, changes in this rel:
x Remove prefs when removing scripts.
x arguments.join and IURI fixes for DPb2

И, кстати, он улучшился заметно.

И, кстати, он улучшился заметно.

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

Modex
У меня, вроде, без проблем инсталлит...

==> Обсуждение расширений

Mishail
Думал попробовать 0.6.3... но что-то не могу найти ссылку... :P

Modex
Внизу сообщения аттач:
http://www.mozdev.org/pipermail/greasemonkey/2005-October/006356.html

Выделить код

Код:

-------------- next part --------------
A non-text attachment was scrubbed...
Name: greasemonkey-0.6.3.xpi
Type: application/x-xpinstall
Size: 41586 bytes
Desc: not available
Url : http://mozdev.org/pipermail/greasemonkey/attachments/20051016/d90681bf/greasemonkey-0.6.3-0001.bin

Сохрани, поменяй расширение на xpi ну и вперед :)

Сохрани, поменяй расширение на xpi ну и вперед smile

Спасибо! :) Я как раз с расширениями не разобрался...

P.S.: Все равно ошибку выдает и ничего не инсталит... :(
gm.PNG

Modex
У тебя FF 1.5? Попробуй сначала снести GM, перегрузись и заново поставь

http://userscripts.org/greasemonkey-0.6.3.xpi

Да, кстати, а что за скрипт ты пытаешься установить? Дай ссылку плиз.

Mishail
Да 1.5РЦ2 Пробовал - не помогает...
Ладно может позже еще раз на "твоей" версии попробую...
А скрипт: windows Genuine Advantage Workaround (IE)
P.S.: Модераторы не ругайте :rolleyes: (а то тут недавно схожую тему прикрыли)

Modex
А до этого у тебя GM стояло? Папка gm_scripts есть в профиле?

Mishail
Стоял :D ... Сейчас все удалил (профиль переставлял)... В профиле такую папку не нашел... :| Да собственно с чего ей быть, если ни одного скрипта не установлено...

Modex
А  другие скрипты без проблем ставятся?

Mishail
Не-а... :|
Вот кстати нашел у них на сайте, но в английском не слишком силен... :rolleyes:

* Update: If you install Greasemonkey 0.6.2 without any prior version installed, installing scripts will not work. You'll see a "file not found error. We'll be updating soon to fix this and are sorry for the bug.

* Апдейт: Если Вы инсталлируете Greasemonkey 0.6.2 при том что не стоит никакая предыдущая версия, установка скриптов работать не будет. Вы увидите ошибку "file not found". Мы скоро обновим расширение для исправления бага. Приносим свои извинения.

Al_H
Спасибо...
Значит как обычно - будем ждать... :|

Greasemonkey 0.6.4. Подробности тут

Мистика... :D На чистом профиле все ставится (по поводу работы еще не проверял), а на "старом" ничего все равно не хочет устанавливать скрипты... :( Профиль переставлять заново неохота...

Modex
Глянь сюда, вроде твой случай:

.derek said...

    i've just installed the 0.6.4 release and am having issues installing new scripts. as a safery measure i've completely uninstalled the previous gm extension and cleaned out any traces of gm from my firefox profile. i'm getting the following error. see screenshot.

    any tips for getting this working?
   
01 December, 2005 00:57   
boogs said...

    .derek,

    Go into about:config. Type "greasemonkey" into the search box. Right click on "greasemonkey.version" and select "reset".

Mishail
Спасибо! Скрипт установился... Уже не ругается... :P Сейчас попробуем проверить работоспособность... :)
P.S.: +1 ;)

Просто для сведения:
Jesse Ruderman - Updated Greasemonkey scripts

Проблема:
В Firefox не работает скрипт Multipopup 2.09.

Вводные:
- Mozilla Firefox 1.5.0.1
- новый профиль
- GreaseMonkey 0.6.4
- использование JavaScript включено
- browser.chrome.toolbar_tips = false

Дополнительно проверил в Mozilla Firefox 1.0.7 с GreaseMonkey 0.5.3 - результат тот же.

Помогите решить проблему. Может быть этот скрипт вообще не работает в Firefox?

Форумчане, если вам нетрудно, то, пожалуйста, подтвердите/опровергните хотя бы наличие проблемы, :rolleyes: А то бьюсь как рыба об лёд... JavaScript то всё равно не знаю, да и куда ещё копать тоже не знаю... :(

stEp
Проблема есть, подтверждаю. Могу как альтернативу предложить Multiline Tooltip Enabler

Могу как альтернативу предложить Multiline Tooltip Enabler

Боюсь что это совсем даже не альтернатива... :(

Боюсь что это совсем даже не альтернатива...

Зато работает :)

раскопал старый материал StraNNicK'a из его блога: Greasemonkey - пять полезных скриптов,  еще выцепил от туда ссылки на материалы о том как прикрутить GreaseMonkey к Опера (ногами не пинать, это так, для общего развития ;)):
Ссылка  номер раз
Ссылка номер два
Ссылка номер три

может пригодится кому :)

Объясните убогому, как в это чудо техники установить свой скрипт. Т.е. я его написал, он лежит у меня в C:\GM\test.js
При нажатии "New user script" получаю ошибку:

Выделить код

Код:

Failed to launch editor: [Exception... "Component returned failure code: 0x80520003 (NS_ERROR_FILE_EXECUTION_FAILED) [nsIMIMEInfo.launchWithFile]"  nsresult: "0x80520003 (NS_ERROR_FILE_EXECUTION_FAILED)"  location: "JS frame :: chrome://greasemonkey/content/utils.js :: openInEditor :: line 121"  data: no]

:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Версия GM 0.6.4

http://diveintogreasemonkey.org/install/userscript.html

обьясните мне как мать ево вообще установить на пальцах обьясните плиз :dumb:

Как NoScript заставить его игнорировать?

Пара вопросов по Greasemonkey:
1. Можно ли GM_xmlhttpRequest использовать не асинхронно?
2. Можно ли в Greasemonkey использовать SOAP?

Переставил firefox. И теперь при открытии файла скриптов у GreaseMonkey не воявляется панель, где предлагается установить скрипт. Не подскажете в чем может быть дело? Firefox 1.5.0.6 рус.

Jenyay
Вы не обновлялись с предыдущей версии Greasemonkey? Попробуйте удалить расширение и снова поставить.

Al_H

Нет, поставил с нуля. Переуставливал, не помогло.

Поставил английский firefox - не помогло. Ставил GreaseMonkey на чистый Flock - то же самое.

Очень странно. Возможно, у Вас что-то отключено. Только что проверил - у меня все работает.

Снес старый профиль, который после переустановки импортировал через MozBackup, поставил расширение - все работает.

memini
https://addons.mozilla.org/ru/firefox/addon/2708
https://addons.mozilla.org/ru/firefox/addon/2393

Доброе время суток,друзья!Вот,решил опробовать это новое для меня расширение-сразу же возник вопрос-как эти *js'ы
инсталлить?Пробовал drag'n'dropить на окно с настройкой расширения-ничего не происходит.Менюшек тоже вроде никаких
не видно типа файл-> ит.п...Хотя в папке профиля,в папке gm_scripts,имеется этот js файл.
Ставил на FF 1.5.0.6 и на Portable 2.0.0.3-везде одинаково.

Файл обязательно должен заканчиваться на <название>.user.js
Иначе ничего не будет происходить, устанавливать соответственно тоже.

Файл обязательно должен заканчиваться на <название>.user.js
Иначе ничего не будет происходить, устанавливать соответственно тоже.

Так,да,стоит юзер разумеется!
Иконочка обезьянки включена,и все равно-никаких движений.Мои действия-то правильны в теории?
Скрипты качал разумеется с userscripts.org

Вообще когда на сайте нажимаете Install Script отобразится окно установки (что-то вроде).
P.S.: попробуйте релиз-кандидат 0.7 (русский там есть)

Ы-ы-ы-ы!Как все просто оказалось!А я-то мудрил!Сохранял файлы скриптов на диск..потом чего-то,как-то заинсталить пытался!Спасибо Modex
Неплохо бы еще,делиться опытом работы с теми или иными скриптами.Вроде отдельной темки,как с расширениями:beer:

Может кто-нибудь помочь переделать
скрипт "greasewall"
http://userscripts.org/scripts/review/11754
чтоб он не блокировал страницу сразу, а сначала выдавал alert-сообщение блокировать/нет (или только предупреждение с одной кнопкой ОК и продолжал загрузку)
[по примеру "Shock Sites Warner" http://userscripts.org/scripts/review/1942 ]

я через дополнение "greasemonkey" научился кое как писать скрипты, и вот мне необходима как-то сохранять переменные между страницами. Посоветуйте как.
Про кукисы и про URL можете не писать, поскок немножко не-то.

Всем привет
У меня проблема с greasemonkey.
Я скачал его вчера , установил , нашел нужный мне скрипт на сайте http://userscripts.org.
По началу все работало хорошо , затем удалил скрипт.
Вскоре мне сново понадобился он  и я сново зашел на сайт и хотел его установить , но вот тут начались проблемы.
Я нажимаю на ссылку установить скрипт , получаю окно где мне надо подождать 3-и секунды , а затем нажать установить.
Я жду эти 3-и секунды , нажимаю установить и на этом все , ни чего не происходит , окно с предложением установить продолжает висеть и на мои нажатия на кнопку установки вообще не реагирует.

Пробовал удалять   greasemonkey заново ставить раз пять , даже решил версию более раннюю поставить , но эффект тоже , скрипты не скачиваются и не устанавливаются.

В чем проблема то не могу понять

решил протестировать недавно скачанный скрипт " vkmusicscript " - для загрузки треков вкладываемых пользователями "В контакте" на сайте.
Почему-то не пашет: должен добавить ссылку "заггрузка" возле кнопки "прослушать", однако ничего подобного нет.
Может быть я не правильно его поставил? Хотя что там ставить.
охватываемые адреса поставил /vkontakte.ru/*
:sick:

охватываемые адреса поставил /vkontakte.ru/*

А если */vkontakte.ru/* ?

Добавлено Wed Mar 26 08:58:39 2008 :
К тому же, вполне возможно www.vkontakte.ru

Отсюда

BloodCoder пишет

Вль мне интерсно ввиду с тем что навреняка большинство пользователей регится в винде на кирилице (Юля Вася Дима Коля) .. и у всех значит возникают проблемы.. с Грезиманки .. ХМ..

Вполне возможно.
Правда, я себя всегда латиницей обзываю =) Кстати,
Win+R => firefox.exe -p (или firefox.exe -p -no-remote – если один профиль уже запущен) => создать профиль Firefox в любой другой папке.

Файл обязательно должен заканчиваться на <название>.user.js
Иначе ничего не будет происходить, устанавливать соответственно тоже.

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

Подскажите со скриптом, мне надо заменить код вида

Выделить код

Код:

<SCRIPT language="JavaScript">
<!--
window.moveTo(0,0);
window.resizeTo(screen.width,screen.availHeight);
//-->
</SCRIPT>

на что-то своё или удалить совсем. Как это сделать?

Только не предлагайте NoScript, мне остальные скрипты нужны, надо только этот модифицировать или удалить.

Имеется расширение, конкретно - Google Bar Lite.  У него есть элемент, текстовое поле с выпадающим меню с id GBL-SearchBox.
Я хочу с помощью скрипта, написанного в GreaseMonkey получить доступ к этому элементу, чтобы вписать туда свою информацию. Как это сделать?
var searchBox = document.getElementById('GBL-SearchBox'); выдает ноль.

Какая кодовая страница в GreaseMonkey используется?

Почему такая строчка работает:

Выделить код

Код:

k1.innerHTML == 'test'

а такая нет:

Выделить код

Код:

k1.innerHTML == 'тест'

И как сделать, чтоб работало?

Minor

Какая кодовая страница в GreaseMonkey используется?

Почему такая строчка работает:

Может utf8?

Может utf8?

А можно ли её сменить?

Или как с неё перекодировать строку в нормальные Windows-1251 и обратно?

Minor

А можно ли её сменить?

Для файла? Можно. Многие редакторы умеют. Вроде даже блокнот умеет (кодировку можно выбрать при Сохранить как).

Для файла?

Для расширения GreaseMonkey.

Добавлено Mon Aug  4 07:37:59 2008 :
Нет ли где-нибудь соответствия кодировок для utf8 и Windows-1251 ?

И ещё попутный вопрос, каким жаваскриптовым кодом преобразовать символы в номера симвлов? Ну там вместо 'a' - 224 и т. п.

Чтоб мне самому попробовать определниться с идиотскими кодировками.

Minor

Для расширения GreaseMonkey.

Ну вообще-то файлы для расширений с локализованными ресурсами должны быть в utf8 - это вроде бы обязательное требование.

И ещё попутный вопрос, каким жаваскриптовым кодом преобразовать символы в номера симвлов? Ну там вместо 'a' - 224 и т. п.
Чтоб мне самому попробовать определниться с идиотскими кодировками.

Ну если очень хочется - вот например Character Set Converters.
Ну и вообще сайт по ссылке в помощь ;)

Ребят, не подскажите? Есть ли в GreaseMonkey возможность сохранения глобальной переменной?
Например, чтоб при смене страницы значение переменной сохранялось?

Уже нашел ответ на свой вопрос! С помощью GM_setValue и GM_getValue можно записывать глобальные переменные!

Greasefire

Когда Вы посетите веб-страницу, которая совместима с использованием скриптов на Userscripts.org, это расширение будет выделять Greasemonkey значок в строке состояния. Щелкните правой кнопкой мыши значок Greasemonkey и выбрать "X скриптов доступных" , увидеть и установить скрипты для текущей страницы.

Z&N
Вот это супер!, спасибо!

ого, расширение 2Мб!!! :o

MadMan
Это ты ещё Cooliris не видел, он 4 Мб весит...

Lain_13
видел, даже пользовался...

Удивительная особенность гризфаера. Хоть он и весит 2 Мб, но сразу после установки выкачивает ещё 2 -- обновление базы. Внимание вопрос -- а зачем они прошивают старую базу в расширение?

может кто-нить написать гризманки скриптдля торенц ру, чтобы рядом с названием раздачи (заголовок фильма) появлялась кнопочка, нажав на которую все символы от "/" до "(" из заголовка "#H1(class=maintitle)" копировались в поисковую форму сайта imdb.com (или другого подобного) и цитировался рейтинг фильма в рамочку прям рядом с кнопкой? было б круто :)
а то на раздачах не все указывают рейтинг imdb, а часто просто дают ссылку на страницу этого фильма на том сайте. лезть туда - очень часто просто лень, а рейтинг знать хочется.

Возникла проблема, во время создания скрипта, может кто поможет :sick:

Для редактирования скрипта надо нажать кнопку «Изменить». В первый раз GM попросит выбрать редактор. В последующие будет автоматически открывать рабочую копию скрипта в выбранном редакторе.

при выборе редактора возникает вот такая ошибка

!Синтаксическая ошибка в имени файла, имени папки или метке тома.!

Заранее благодарен!

Присоединяюсь к вышезаданному вопросу!!! У меня та же проблема на винде (на Убунте пока не пытал)
:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2 (.NET CLR 3.5.30729)

А русских букв или спец. символов в пути к редактору нет?

Лично я извращался как только мог:
1. Менял профиль - не помогло.
2. Менял версию [firefox] - то же.
3. Менял местоположение профиля - так же.
4. Назначал разные редакторы - результат нулевой.
5. Сносил плагины - никак не помогло.
Увы... :(

ПротопопулуS
аналогично, все вышеперечисленное делал, тоже не помогает. Ставил это приложение на работе все работает нормально, а вот на домашнем ПК ни как (

Тут по-моему следует баг-репорт писать автору...

А русских букв или спец. символов в пути к редактору нет?

К редактору нет, а вот к папке где хранятся скрипты есть.
ПротопопулуS
не знаю где нужно указать путь, если перенести папку в другое место где не будет в пути кириллицы...
C:\Users\Пользователь\AppData\Roaming\Mozilla\Firefox\Profiles.... именно \Пользователь\ и не дает работать с редактором.
Создал новую учетную запись с латинским названием все заработало, только теперь неудобно что на компе 2 уч.записи.

Но тем не менее баг с этим остается!

Аа. Понятно. У меня уже давно учетка в латинице.

Просто много софта не распознают кирилицу в путях...

Приветствую всех. Возможно кто-нибудь знает ответ на следующий вопрос:
Куда/откуда функции GM_SetValue/GM_GetValue сохраняют/берут значения переменных для конкретного скрипта?
Имя переменной известно. Поиск по всем файлам на винчестере с текстом=имени переменной производил - положительного результата не получил.

Зачем это надо: есть greasemonkey скрипт и есть сайт, для некоторых страниц которого он работает. Сайт посещается с работы (пн-пт) и из дома (сб-вс). При работе скрипта, он периодически сохраняет некоторый набор переменных через функцию GM_SetValue, а при начале работы читает через GM_GetValue . Требуется синхронизировать эти данные между рабочим и домашним компьютером 1 раз в неделю :)

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

З.З.Ы. Всем спасибо за внимание, вопрос больше не актуален. Если кто-то еще столкнется с такой же проблемой, то ответ ниже:
GM_selvalue сохраняет все переменные в firefox preferences
прочитать/удалить/изменить/найти их можно через about:config  и затем ввести фильтр greasemonkey.scriptvals - будет выдан полный список сохраненных переменных со значениями :)

Всем привет. Кто-нибудь сталкивался с проблемой кодировок при выполнении функции GM_xmlhttpRequest?  Вместо русских букв приходят ромбики. У страницы в заголовке (если зайти просто браузером) написано

Выделить код

Код:

<meta content="text/html; charset=windows-1251" http-equiv="Content-Type"/>

.
Пробовал в поле заголовков (headers) писать

Выделить код

Код:

'Content-type': 'text/html;charset=windows-1251'

и даже

Выделить код

Код:

'Content-type': 'text/html;charset=utf-8'

- не помогло.

Заранее спасибо.

Upd:
Посмотрел пакет, приходящий с сервера, Wireshark'ом, там русские буквы закодированы так (к примеру):
\320\373\355\356\352
по байтам:
d0 fb ed ee ea
русское соответствие:
Рынок

Upd(2):
Решил проблему, используя вместо GM_xmlhttpRequest объект XMLHttpRequest.

Выделить код

Код:

var req = new XMLHttpRequest();
    req.open('GET', '.......', true);
    req.overrideMimeType('text/html; charset=windows-1251');

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

Наткнулся на такой пример:

Выделить код

Код:

try {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
//(*)location.href = "javasсript:netscape.security.PrivilegeManager.enablePrivilege( 'UniversalXPConnect')";
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
        
        //проверяем ОС
        if (navigator.userAgent.indexOf("Win") != -1) {
            file.initWithPath("c:\foo.txt");
        } else {
            file.initWithPath("/foo.dat");
        }
        
        if (!file.exists()) {
            file.create(file.NORMAL_FILE_TYPE, 0644);
        }
        
        var ioService = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
        var uri = ioService.newFileURI(file);
        var channel = ioService.newChannelFromURI(uri);
        var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
        
outputStream.init(file, 0x20 | 0x02, 00004, null);
var buffer = "This is a testn";
outputStream.write(buffer, buffer.length);
        
outputStream.flush();
outputStream.close();
} catch (e) {
        alert(e);
}

Рядом с ним было сказано: установить дополнение jslib_current_signed (установил, хотя и не знаю, зачем).
Проблема:
Ошибка "netscape is not defined". Где-то вычитал, что вместо первой строчки надо использовать закомментированную (со звёздочкой), но судя по всему, она также не работоспособная, потому как выдаётся сообщение "access denied to get property Components.classes".
На русском ничего не нашёл на эту тему, на английском вся информация сводится к двум вещам: то, что это надо написать и будет работать, и постам на форуме на тему: "я так написал, но оно не работает".

Собственно, вопрос: что делать?) Спасибо за внимание.

У меня проблема с vkontakte. Скачал скрипт отсюда - http://userscripts.org/scripts/show/16985. Он позволяет скачивать треки и находит тексты песен. Тексты он и правда находит, а вот скачивать не хочет - включается воспроизведение. К уже вписанному адресу ашttp://vkontakte.ru/* добавил ашttp://*.vkontakte.ru/* - не помогло. В чем может быть проблема?

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

Помогите сделать скрипт который бы мог брать данные из формы с сайта. Есть html форма с <input>-ми из которых потом все отправляется через POST. Приведите пример как эти данные параллельно записывать в файл в виде имя = значение. Буду очень признателен если кто-то напишет пример, т.к. сам не силен в js.

А на firefox 3.5.3 greasemonkey работает?
Я пытаюсь установит дополнения но вылетает ошибка совместимости.
Может я что то не так делаю
Заранее спасибо.

Ru5laN92 пишет

А на firefox 3.5.3 greasemonkey работает?

конечно работает.
1) Как включить режим принудительной совместимости в Firefox 3?. Первый способ.
2) Включение принудительной совместимости дополнений с новыми версиями ПО. Второй способ.

Попробовал удалить фрейм конструкцией типа:

Выделить код

Код:

var id;

     id = document.getElementById('menu');
        if (id) {
            id.parentNode.removeChild(id);
              }

где "menu" - это название фрейма.
Но не вышло. Как это сделать правильно?

Собственно, нужна помощь. Кто ни будь может модифицировать скрипт letitbit.net helper [2009-04-19], предназначенный для облегчения скачивания с файлообменника

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.
. Раньше скачивание по ссылке "бесплатно" находилось на той же странице, что и платная закачка и скрипт перекидывал сразу на окно ввода кода с капчи. Теперь же, кнопка "скачать" осталась на месте, но она не начинает проверку кода и закачку, если код введён верно, а перекидывает на другую страницу, на которой теперь находится поле для ввода кода и ещё одна кнопка, которая и отвечает за скачивание.
Посмотреть, как изменён дизайн файлообменника можно на
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.
(Ссылка дана только для того, что бы можно было ознакомится с работой страницы загрузки. Программа, представленная по ссылке, бесплатна, если что)
Раньше страница для бесплатного скачивания выглядела так: 
4af972cb507bb_thumb.jpg

Теперь она выглядит так: 
4af972d019de0_thumb.jpg

После нажатия кнопочки "скачать файл" перекидывает на другую страницу: 
4af972d5056f9_thumb.jpg

Что, ни кто не может помочь? :(

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

надеюсь тема еще не умерла... :blush:
Скриптописатели, помогите сделать скрипт для обладателей Gold аккаунта на файлообменник

скрытый текст
letitbit.net

так, чтобы при нажатии для закачки на ссылку вида
скрытый текст
например, http://letitbit.net/download/7192.7c2f0ea4d2213020672e4af34/SetupAnyDVD6608.exe.html

автоматически после открытия страницы заполнялось поле пароля нужными данными и сам нажимался ентер для перехода на страницу с уже готовыми ссылками!
Такое может получиться?

Подскажите как в форму забросить текст из файла. Зарание спасибо;)

Я вот задался одним вопросом. Думаю, тут все или почти все юзают torrents.ru. На данном ресурсе главная страница, говоря по-простому, удалено, и скроллить постоянно неудобно (думаю, и не мне одному). Возможно ли реализовать такой скрипт, чтоб разделы можно было б скрыть за спойлерами? Если да, то откуда начать копать лучше всего?

Замечание п. 3.3
Sergeys

Народ почему greasemonkey неработает в minefield'е ? это можно как нить исправить? установил принудительную совместимость

:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.3a1pre) Gecko/20100103 Minefield/3.7a1pre (.NET CLR 3.5.30729)

Проблема решена. Поставил версию указанную в этом сообщении http://forum.mozilla-russia.org/viewtopic.php?pid=391348#p391348 и все стало работать. А почему же тогда последняя dev_версия неработает...:/:usch:

Вот у меня такой код скрипта.

Выделить код

Код:

document.getElementById('Div1').innerHTML = '<a href=javascript:MyFunc()>My Function</a>';

function MyFunc() {alert('Okey')};

Он ищет тег <div ID=Div1></div> вставляет в него ссылку, при клике на которую вызывается функция MyFunc, которая выводит надпись "Okey".

Всё это прекрасно работает, если просто вставить скрипт в страничку Но когда я вставляю это в скрипт Greasemonkey и применяю его к страничке, то ссылка выводится, но при клике на неё ничего не происходит. Почему?

Если принудительно приписать ссылке addEventListener("click", ... , то она будет срабатывать и для сайтов. Но это неудобно. Как сделать, чтобы не надо было приписывать addEventListener или есть ли такая функция, которая приписывала бы все addEventListener'ы автоматически?

В чём тут дело?

Minor пишет

Но это неудобно.

А тут или удобно, или безопасно: http://wiki.greasespot.net/XPCNativeWrapper.

Infocatcher

Infocatcher пишет

А тут или удобно, или безопасно: http://wiki.greasespot.net/XPCNativeWrapper.

Я не понял, в чём смысл этой ихней паранойи? Почему они боятся, что кто-то вставит обычную ссылку, но не боятся, что кто-то сделает тоже самое, только через addEventListener?


Ещё одна ипостась этой проблемы.

Выделить код

Код:

var k1 = document.getElementById('Div1').innerHTML
document.getElementById('Div1').innerHTML = k1;

После этого все ссылки на скрипты которые были в Div1 перестают работать. Что мне делать?
Существует ли функция, которая могла бы сделать полный парсинг всех существующих на свете событий произвольного куска кода, чтобы можно было их восстановить через addEventListener?

Minor пишет

Я не понял, в чём смысл этой ихней паранойи? Почему они боятся, что кто-то вставит обычную ссылку, но не боятся, что кто-то сделает тоже самое, только через addEventListener?

В том, что со страницы нельзя получить ссылку на обработчик, добавленный через addEventListener.
А если со страницы можно узнать ссылку на объект, созданный с более высокими привилегиями, есть вероятность получения и самих привилегий.

Вообще, в Firefox 3 и выше повышенные привилегии просто так не получить. Но, с другой стороны, не просто же так оставили XPCNativeWrapper.

Так что, если очень хочется, можно делать вот так:

Выделить код

Код:

document.getElementById('Div1').innerHTML = '<a href=javascript:MyFunc()>My Function</a>';

unsafeWindow.MyFunc = function() {alert('Okey')};

Или как-то так:

Выделить код

Код:

location.href = "javascript: " + <![CDATA[

...

]]>.toString();

После этого все ссылки на скрипты которые были в Div1 перестают работать. Что мне делать?

Смотря что изначально находилось внутри Div1.
Ссылки на узлы DOM-дерева, которые были внутри Div1, будут в любом случае потеряны. Вернее, будут ссылаться на уже удаленные из документа объекты.

Infocatcher

Infocatcher пишет

В том, что со страницы нельзя получить ссылку на обработчик, добавленный через addEventListener.

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

Что вообще за привилегии такие? Зачем они нужны?

Вообще это мой скрипт, мой браузер. Всё моё. Какое вообще их дело, чего я со своей страничкой делаю? Если у них мания преследования, то я здесь причём?

Как это отключить?


Выделить код

Код:

unsafeWindow.MyFunc = function() {alert('Okey')};

Alert я привёл только для примера. Чтобы показать, что не работает.


Infocatcher пишет

Смотря что изначально находилось внутри Div1.
Ссылки на узлы DOM-дерева, которые были внутри Div1, будут в любом случае потеряны. Вернее, будут ссылаться на уже удаленные из документа объекты.

Мне надо не конкретную функцию вручную вписывать. А универсальную функцию, которая бы перебирала все теги, искала все их события, и всё, что в их событиях вписано и перестало работать, и активировала бы обратно через addEventListener или каким угодно другим способом. Можно так сделать?

То есть:

Выделить код

Код:

// StartTag -  стартовый тег, от которого и ниже надо восстановить все события.
function AntiParanoics(StartTag) {

  var AllTags = StartTag.getElementsByTagName('*');

  // 1) Далее надо перебрать все события которые к тегу привязаны.

  // 2) Потом перепривязать все эти события через addEventListener.

}

Как мне перебрать все события которые к тегу привязаны?

Если такую функцию написать - будет большое благо, для всех кто пишет свои скрипты под Greasemonkey. Можно будет вставить вызов одной функции и не заниматься каждый раз геморроем.

Что вообще за привилегии такие? Зачем они нужны?

У расширений и той части интерфейса, что написана на JavaScript, больше привилегий, чем у скриптов с посещаемых страниц, для них и нужны.

Вообще это мой скрипт, мой браузер. Всё моё. Какое вообще их дело, чего я со своей страничкой делаю? Если у них мания преследования, то я здесь причём?

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

Alert я привёл только для примера. Чтобы показать, что не работает.

Во-первых, там обертка вида

Выделить код

Код:

(function() { /* весь код */ })();

Во-вторых, просто так нельзя добавлять свои поля глобальному объекту страницы (который window) – только через прямое добавление полей к unsafeWindow.


Мне надо не конкретную функцию вручную вписывать. А универсальную функцию, которая бы перебирала все теги, искала все их события, и всё, что в их событиях вписано и перестало работать, и активировала бы обратно через addEventListener или каким угодно другим способом. Можно так сделать?

По-моему, это проблема подхода. В том смысле, что проще изменить подход, чем делать универсальный велосипед.
И хотелось бы конкретный пример.

В любом случае, если не нужны GM-функции (и, скорее всего, поддержка других браузеров, которые могут не уметь E4X, который в данном случае упрощает написание строковых данных), достаточно делать вот так:

Выделить код

Код:

location.href = "javascript: " + <![CDATA[

function xxx() {
    alert(0);
}
document.body.setAttribute("onclick", "xxx();");

]]>.toString();

Тогда скрипт будет выполняться полностью в контексте страницы.

Infocatcher

Infocatcher пишет

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

В чём оно небезопасное то? То, что на страничке матерное слово напишет? Текст он и есть текст.


Infocatcher пишет

По-моему, это проблема подхода. В том смысле, что проще изменить подход, чем делать универсальный велосипед.

Удобство в том, чтобы не менять своих привычек.


Infocatcher пишет

В любом случае, если не нужны GM-функции (и, скорее всего, поддержка других браузеров, которые могут не уметь E4X, который в данном случае упрощает написание строковых данных), достаточно делать вот так:

Как я уже говорил в прошлом постинге, мне нужен не alert, а функция, которая бы нашла ВСЁ, что поотключали эти больные манией преследования, и сама бы это включила бы обратно, через addEventListener, или любым другим способом.

Обнаружил, что если вызвать addEventListener несколько раз, то она добавит несколько вызовов на одну и туже функцию. Это как если бы при клике на ссылку, у вас бы открылось не одно, а сразу 10 одинаковых ссылок.

Прям маразм крепчает. Всё через ... сделано.

Существует ли фунция addEventListenerIfNeedit? Или addEventListenerOnce ? Или SetEventListener? Или FindAllEvents? Или RemoveAllEvents?

Или что-нибудь, что даст простое решение этой проблемы.

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

Inko7 пишет

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

Попробуй это

Minor пишет

Как я уже говорил в прошлом постинге, мне нужен не alert, а функция, которая бы нашла ВСЁ, что поотключали эти больные манией преследования, и сама бы это включила бы обратно, через addEventListener, или любым другим способом.

Я привел код, запускающий скрипты так, как если бы они находились на странице. В таком случае нету ограничений, накладываемых обертками, потому как их нету за отсутствием взаимодействия кода с разными привилегиями.
А без конкретного неработающего примера что-то сказать проблемно.

Прям маразм крепчает. Всё через ... сделано.

Так во всех браузерах сделано. Даже в IE, но там методы иначе называются и аргументы чуть другие.

Существует ли фунция addEventListenerIfNeedit? Или addEventListenerOnce ? Или SetEventListener? Или FindAllEvents? Или RemoveAllEvents?

Не существует, но можно написать.
А для перебирания добавленных обработчиков нужны привилегии отдельного расширения и Firefox 3.6 и выше. Eventbug вот работает.

Infocatcher

Infocatcher пишет

Не существует, но можно написать.

Я вот мучаюсь, никак не могу написать. Как мне сделать SetEventListener вместо AddEventListener?

Мой код:

Выделить код

Код:

function SetEventListener(MyTag1, Event1, Func1) {
    // Сначала надо удалить ВСЕ старые события. Как это сделать?
  MyTag1.removeEventListener(Event1, MyTag1.handle, true);
    // Дальше надо установить новое событие.
  ATag.addEventListener(Event1, Func1, false);
}

  // Вызов:
  MyTag1.addEventListener(MyTag1, "click", function() {MyFunc1()});

Не работает. Чего не так? Как исправить?

Infocatcher пишет

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

То есть, чтобы МНОЮ же добавленные строчкой кода выше обработчики перебрать нужны ещё какие-то дополнительные привилегии?

Например, так:

Выделить код

Код:

var p = "__listeners";
function removeListener(node) {
    if(p in node) {
        var evt = node[p];
        node.removeEventListener(evt.type, evt.func, evt.useCapture);
    }
}
function addSingleListener(node, type, func, useCapture) {
    removeListener(node);
    node.addEventListener(type, func, useCapture);
    node[p] = { type: type, func: type, useCapture: useCapture };
}

Добавляемый обработчик запоминается в свойстве "__listeners", перед повторным добавлением сначала снимается старый обработчик.
При желании можно скрыть «хранилище» уже добавленных обработчиков, переместив его в отдельный массив, но тогда будет теряться производительность на проверку наличия узла, к которому требуется добавить обработчик, в этом массиве.

Minor пишет

То есть, чтобы МНОЮ же добавленные строчкой кода выше обработчики перебрать нужны ещё какие-то дополнительные привилегии?

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

20-01-2010 02:58:30

Не работает. Чего не так? Как исправить?

ATag нигде не объявлено.
К тому же, для снятия обработчика нужно совпадение всех аргументов addEventListener/removeEventListener – должна быть ссылка на ту же самую функцию и должен совпадать третий аргумент, отвечающий за момент перехвата события.

Infocatcher

Infocatcher пишет

Например, так:

Заменил везде addEventListener на addSingleListener , но ничего не изменилось. Как появлялось несколько вызовов одной и той же функции при клике мышью, так и появляется.

Infocatcher пишет

При желании можно скрыть «хранилище» уже добавленных обработчиков, переместив его в отдельный массив

То есть функция addSingleListener одноразовая? Ну addEventListener - не одноразовая функция, и мне тоже нужна не одноразовая.

Infocatcher пишет

ATag нигде не объявлено.
К тому же, для снятия обработчика нужно совпадение всех аргументов addEventListener/removeEventListener – должна быть ссылка на ту же самую функцию и должен совпадать третий аргумент, отвечающий за момент перехвата события.

Вот как просто было написать a href=javascript:MyFunc() и никакого геморроя ...

Infocatcher пишет

тогда будет теряться производительность

Об этом надо забыть, пока не расстреляют всех этих разработчиков, которые высыпали такую кучу ... на простых скриптописателей.

Maxone
спасибо, хорошая вещица!
но все равно это немного не то, хочется увидеть маленькую превьюшку при наведении... :whistle:

Minor пишет

Как появлялось несколько вызовов одной и той же функции при клике мышью, так и появляется.

Или там нельзя свои свойства добавлять...
Это помимо опечатки в «func: type» (должно быть func: func).

Minor пишет

Вот как просто было написать a href=javascript:MyFunc() и никакого геморроя ...

Я же сразу предложил попробовать засунуть весь код вовнутрь конструкции

Выделить код

Код:

location.href = "javascript: " + <![CDATA[
// некий код
]]>.toString();

Вот, вроде, работает:

Выделить код

Код:

var _nodes = [];
var _realNodes = [];
var _handlers = [];
function removeListener(node) {
    var indx = _realNodes.indexOf(node);
    if(indx != -1) {
        var evt = _handlers[indx];
        _nodes[indx].removeEventListener(evt.type, evt.func, evt.useCapture);
        _nodes.splice(indx, 1);
        _realNodes.splice(indx, 1);
        _handlers.splice(indx, 1);
    }
}
function addSingleListener(node, type, func, useCapture) {
    node.addEventListener(type, func, useCapture);
    var realNode = node.wrappedJSObject || node;
    removeListener(realNode);
    _nodes.push(node);
    _realNodes.push(realNode);
    _handlers.push({ type: type, func: func, useCapture: useCapture });
}

addSingleListener(document.body, "click", function(e) { alert(e.target); }, true);
addSingleListener(document.body, "click", function(e) { alert(e.target); }, true);
addSingleListener(document.body, "click", function(e) { alert(e.target); }, true);

Infocatcher

Infocatcher пишет

Вот, вроде, работает:

Спасибо! Потестирую.

А есть какая-нибудь функция, чтобы можно было загрузить произвольную страничку в переменную? Чего-то никак найти не могу. Что-нибудь типа:

Выделить код

Код:

var s1 = LoadPage('http://google.com/index.html');
alert(s1);
Minor пишет

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

Если произвольную, то только GM_xmlhttpRequest.
А для страниц с того же домена можно использовать XMLHttpRequest (примеры).

Infocatcher

Infocatcher пишет

Если произвольную, то только GM_xmlhttpRequest.
А для страниц с того же домена можно использовать XMLHttpRequest (примеры).

Спасибо! :)

Почему-то удаётся получить responseText, но responseXML равен null.

Там по ссылке написано:

Note: If the server doesn't apply the text/xml Content-Type header, you can use overrideMimeType() to force XMLHttpRequest to parse it as XML anyway.

А как это сделать?

Minor
Примерно так:

Выделить код

Код:

var req = new XMLHttpRequest();
req.open("GET", "http://...", false);
req.overrideMimeType("text/xml");
...

А для GM_xmlhttpRequest есть пример:

Выделить код

Код:

// Inject responseXML into existing Object if not present
    if (!response.responseXML)
      response.responseXML = new DOMParser().parseFromString(response.responseText, "text/xml");

Кто-нибудь может написать или сказать, где попросить, чтоб написали скрпит для history.qip.ru? Хочется иметь возможность просматривать большее количество сообщений на странице, сохранять всю историю себе в txt.

Infocatcher
Спасибо!

А можно сделать так, чтобы сначала загружался скрипт, а потом грузилась страничка?
Чтобы не надо было ждать пока страничка полностью загрузится. А чтобы по мере её загрузки скрипт выполнял свою работу.

Minor пишет

А можно сделать так, чтобы сначала загружался скрипт, а потом грузилась страничка?
Чтобы не надо было ждать пока страничка полностью загрузится. А чтобы по мере её загрузки скрипт выполнял свою работу.

Greasemonkey срабатывает по событию DOMContentLoaded – то есть когда DOM-дерево полностью построено (но какие-нибудь картинки еще грузятся).
С очередностью сложно, не знаю. А для одновременности придется писать свое расширение и слушать какой-нибудь onProgressChange.

Здравствуйте. А не поможете решить вопрос http://forum.mozilla-russia.org/viewtop … 11#p409111 Я просто сам в скриптах ни грамма не понимаю.
Соответственно сам написать не смогу. Да и вообще не понимаю что и куда писать. Расширение поставил поставил, а что делать не знаю.

Infocatcher

Infocatcher пишет

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

А существует простой способ переделать скрипт в расширение, которое запускает скрипт по onProgressChange?

Minor пишет

А существует простой способ переделать скрипт в расширение, которое запускает скрипт по onProgressChange?

http://forum.mozilla-russia.org/viewtopic.php?id=39496
Готового нету, вроде как. Так что сначала нужно сделать сам механизм, позволяющий узнать момент начала загрузки. А запускать скрипты по какому-то событию легко (ну, если обойтись без интерфейса настроек) – сложность только в том, чтобы узнать момент наступления события.

Infocatcher
Но ведь AdBlock как-то блокирует элементы сразу, а не после загрузки страницы.

Ещё вопрос, можно руссифицировать скрипт без UTF-8?

Minor пишет

Но ведь AdBlock как-то блокирует элементы сразу, а не после загрузки страницы.

Там другой механизм. Перед загрузкой любого объекта сначала опрашиваются все «слушатели» и если ни один из них не отменил запрос, то начинается загрузка. То есть, по идее, на этом этапе нельзя сказать, будет ли это что-то загружено.

Например, в BetterCache вот так:

Выделить код

Код:

var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.addObserver(httpObserver, "http-on-examine-response", false);

и

Выделить код

Код:

var httpObserver = {
  ...
  observe: function(subject, topic, data) {
          if (topic == "http-on-examine-response")
                {
                   ...
                }
  }
};

Только при этом еще нет объекта window страницы, чтобы выполнить код в его контексте. :|

P.S. А в Adblock Plus, насколько я понимаю,

Выделить код

Код:

//
    // nsIContentPolicy interface implementation
    //

    shouldLoad: function(contentType, contentLocation, requestOrigin, node, mimeTypeGuess, extra)
    {
    ...

06-02-2010 19:00:53

Ещё вопрос, можно руссифицировать скрипт без UTF-8?

Можно.

Выделить код

Код:

alert("\u041F\u0440\u0435\u0432\u0435\u0434\u0021");

После \u – hex-код символа.
Только это сомнительное удобство.

Infocatcher пишет

Можно.
Код:

alert("\u041F\u0440\u0435\u0432\u0435\u0434\u0021");

После \u – hex-код символа.
Только это сомнительное удобство.

Всё равно лучше чем ничего! Спасибо!

Скажите, если я напишу какой-нибудь гениальный скрипт, то есть какое-нибудь место, где им можно поделиться (кроме этой странички)?

Minor
Естественно — выложи на userscripts.org, самый главный сайт. Тысячи людей будут безмерно тебе благодарны.

Никому не попадался скрипт который по клику отмечал чекобксы на странице? Есть просто сайты где постоянно приходится работать и какой-то Петя не додумался "отметить все" прикрутить.

Daglus
И снова userscripts.org, поиск по фразе check all checkboxes. Два, на мой взгляд, неплохих скрипта — Select (управление из меню значка Greasemonkey) и Check boxes (сверху страницы появляется панелька со ссылками).

pi.v.vitaly
Салют инопланетным захватчикам!

Sid спасибо Select  понравился, жалко нельзя в нем через сочетания клавиш выделять все

Обновился Greasemonkey 0.8.20100408.6

Здравствуйте!

Я пишу скрипт, который на всех (почти) страницах выводит пользовательскую форму
0_3d397_dc5c7a08_M.jpg
Сейчас средствами CSS я просто зафиксировал DIV с формой наверху окна. Но пришлось предусмотреть пару кнопочек для свертывания / развертывания формы т.к. она закрывает часть страницы.

Вопрос: Как разместить эту форму аналогично тому, как сделано в результатах поиска картинок Google:
0_3d281_f5402415_M.jpg
т.е., чтобы страница прокручивалась и не закрывалась моей формой?

Буду благодарен за мысли и примеры :-)

Что-то не придумаю никак, как это реализовать через Greasemonkey.

эм. а вот у меня при включенном Greasemonkey, открывается сего домашняя страница при любой операции о очень много раз. как это отключить?

можно ли как-то через Greasemonkey скриптом заставить подобные сайты как http://www.cjclub.ru/ вписываться без горизонтального скрола на мониторах с разрешением 1024-768? Если да то от примера не отказался бы.  Вариант поставить еще одно дополнение не устраивает :)

Daglus пишет

можно ли как-то через Greasemonkey скриптом заставить подобные сайты как http://www.cjclub.ru/ вписываться без горизонтального скрола на мониторах с разрешением 1024-768? Если да то от примера не отказался бы.  Вариант поставить еще одно дополнение не устраивает

Я думаю, можно.
Нужно выяснить, какие элементы на странице не дают сузиться странице до 1024.
Например, ширину div'а, заданную через атрибут width можно переназначить. Если ширина задана через css - следует присвоить соответствующему свойству нужное значение.

05-06-2010 20:39:20
Товарищи!
Такой вопрос:
Я добавляю на страницу свою форму (поля textarea, кнопки и т.п.).
Для этого приходится пользоваться конструкцией вида:

Выделить код

Код:

var logo = document.createElement("div");
logo.innerHTML =
'<div>' +
'<код: стили, html, скрипты>' +
...
'</div>';
document.body.insertBefore(logo, document.body.firstChild);

Как видно, функции Javascript я тоже записал внутри этой конструции.
Но!
Таким образом эти ф-ции стали частью документа и, видимо, на некоторых страницах конфликтуют с "родными" скриптами и работают со сбоями.
Что я делаю не так?
Можно ли элементы управления встроенные через приведённую конструкцию связать с ф-циями, вынесенными за эту конструкцию?
Я понятно изъясняюсь? :)
.

julios пишет

Что я делаю не так?

Видимо, не так там с уникальностью названий глобальных переменных.

julios пишет

Можно ли элементы управления встроенные через приведённую конструкцию связать с ф-циями, вынесенными за эту конструкцию?

Можно, связывайте. :D
addEventListener в помощь.

Или нужно оставить расположение скриптов как есть, но отказаться от глобальных переменных:

Выделить код

Код:

(function() {
    var x = "test";
    alert(x);
})();
alert(x); // скажет, что нет такой переменной

отказаться от глобальных переменных

вообще, стараюсь избегать использования глобальных переменных, но у меня и надобности такой не было.
Хотел бы уточнить свой второй вопрос.
Вот так выглядит мой скрипт для Greasemonkey:

Выделить код

Код:

// ==UserScript==
// @name  FillForm_01
...
// ==/UserScript==

document.getElementById('main_body').align="left"; // К примеру, выполняем некоторые действия с элементами страницы
document.getElementById('main_body').style.width="50%"; // привет, Daglus

function $1 () {} // Определяем функцию $1 ()

// Затем уже упомянутая конструкция:

var logo = document.createElement("div");
logo.innerHTML =
'<div>' +
'<script type="text/javascript">' +
'function $2 () {}' +
'</script>' +
'$2 ()' + // Эта ф-ция будет вызвана
'$1 ()' + // Эта ф-ция НЕ будет вызвана
'</div>';
document.body.insertBefore(logo, document.body.firstChild);

Как тут применить addEventListener?

'</script>' +
'$2 ()' + // Эта ф-ция будет вызвана
'$1 ()' + // Эта ф-ция НЕ будет вызвана
'</div>';

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

Функции $1 и $2 объявлены в разных местах. А Greasemonkey принудительно заворачивает весь код в функцию:

Выделить код

Код:

(function() { некий_код; })();

Так что

Выделить код

Код:

var foo = 1;
location.href = "javascript: alert(foo);";

приведет к ошибке.

Нет, опечатки нет.

Таких конструкций:

Выделить код

Код:

var foo = 1;
location.href = "javascript: alert(foo);";

у меня нет.

Про глобальные переменные, извините, ничего не понял.
Всё, что я о них знаю, это знания из азов PHP.

julios пишет

у меня нет

Выделить код

Код:

function foo() {}
alert(foo);
var s = document.createElement("script");
s.type = "text/javascript";
s.appendChild(document.createTextNode("alert('Script'); alert(foo);"));
document.body.appendChild(s);
julios пишет

Про глобальные переменные, извините, ничего не понял.

$1 () – вызов глобальной переменной с именем "$1", что эквивалентно вызову window.$1();.
Таким образом, или функция $1 должна быть объявлена в том же контексте, в котором производится ее вызов, или нужно вообще отказаться от глобальных переменных:

Выделить код

Код:

function f() {
    alert(0);
}
f();

и

Выделить код

Код:

(function() {
    alert(0);
})();

Подскажите скрипт который на определённой странице жмёт кнопку через заданный промежуток времени... 
Я пользуюсь iMacros,и команда в нём выглядит так;

скрытый текст
TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:f ATTR=NAME:next&&VALUE:GOU
WAIT SECONDS=15

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

Ребята есть ли скрипт который в одноклассниках автоматически ставит пятерки просматриваемой фотке, а то один человек меня уже достал:mad:

Infocatcher пишет
Выделить код

Код:

function foo() {}
alert(foo);
var s = document.createElement("script");
s.type = "text/javascript";
s.appendChild(document.createTextNode("alert('Script'); alert(foo);"));
document.body.appendChild(s);

Вот в этой строчке:

Выделить код

Код:

s.appendChild(document.createTextNode("alert('Script'); alert(foo);"));

смысл alert(foo); мне не ясен.
Он ничего не выводит.

julios пишет

смысл alert(foo); мне не ясен.
Он ничего не выводит.

Иногда смысл – в отсутствии чего-либо.

Если некая функция foo должна вызываться скриптом со страницы, то она должна быть объявлена там же.

Выделить код

Код:

function foo() { return 0; }
alert(foo);
var s = document.createElement("script");
s.type = "text/javascript";
s.appendChild(document.createTextNode("alert('Script'); alert(typeof foo + '\\n' + foo2); function foo2() { return 1; }"));
document.body.appendChild(s);

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

Всем добрый день, кто больше понимает помогите елси возможно сваять скрипт  который бы с этого сайта

скрытый текст
http://www.ex.ua/view/1641092

По клику на играть открывал ссылку не в проигрывателе сайта в плеере в системе (VLC или Smplayer). Каждый раз копировать ссылку и вставлять в плеер нудно :)

У меня greasemonkey конфликтует с picasaweb - там перестают работать все кнопки . Это можно поправить ?

GeorgM
может конфликтует всё же не само дополнение, а какой-то из скриптов?

На момент возникновения проблемы был включен только скрипт savefrom для скачивания с депозита .

Аналогичная проблема, GeorgM, не могу разобраться(

Подскажите, пожалуйста, как сделать, чтобы этот скрипт http://forum.mozilla-russia.org/viewtopic.php?id=25555 срабатывал в заданном диапазоне адресов без нажатия F2, сразу.

hop
Заменить

Выделить код

Код:

if (e.keyCode == teMyKeyCode) {

на

Выделить код

Код:

if (!e || e.keyCode == teMyKeyCode) {

и в самом конце добавить

Выделить код

Код:

changeColors();
Infocatcher пишет

hop
Заменить

Выделить код

Код:

if (e.keyCode == teMyKeyCode) {

на

Выделить код

Код:

if (!e || e.keyCode == teMyKeyCode) {

и в самом конце добавить

Выделить код

Код:

changeColors();

Спасибо!

Добрый день господа!
Подскажите, существует ли какой либо скрипт, который бы позволял выполнять задачи описанные в этой теме http://forum.mozilla-russia.org/viewtopic.php?pid=454620#p454620
И не могли бы Вы просветить, а дорого ли стоит заказать написание скрипта, для выполнения задач из  вышеуказанной темы.
Спасибо.

Доброго времени суток.
Подскажите, пожалуйста, аналог для GM оперовоской:

Выделить код

Код:

window.opera.addEventListener('BeforeScript', function (e){

Т.е. как в GM можно отследить событие до/после выполнения браузером JS скрипта.

ето только у меня GM не удаляет скрипты на ночных сборках GM?

`p r o x y
http://forum.mozilla-russia.org/viewtopic.php?id=46965.

Друзья, подскажите новичку, почему не работает onclick?
Пишу простейший скрипт:

document.body.innerHTML+='<button onclick="qqq()">lololololololoolol</button>';
function qqq(){
alert('');
}

и ничего не происходит...

Tom_Creo

Друзья, подскажите новичку, почему не работает onclick?

Потому что это небезопасно для здоровья.

MySh пишет

Tom_Creo

Друзья, подскажите новичку, почему не работает onclick?

Потому что это небезопасно для здоровья.

спасибо :)
<input id="btn" value="Submit" type="button" />

button=document.getElementById("btn");
button.addEventListener("click", run, false);

function run()
{
do something

(с) Vectorspace

Проблема с GreaseFire - стоит версия 1.0.4 совместимо с Greasemonkey. Почему-то иногда выдает, что не совместимо с 3.6.13 - решается проблема обновлением браузера и в результате перезапуска всё в порядке. Такое бывает время от времени. Как исправить?

Друзья, подскажите, пожалуйста, почему не работает setInterval и setTimer в гризманкей?

document.body.innerHTML+='<input id="btn" value="Submit" type="button" />'
button=document.getElementById("btn");

var ttt=setInterval("pool()",1000);

function pool(){
button.value+="1"
}

Консоль ошибок пишет

Ошибка: pool is not defined

setInterval приводит к вызову eval("pool()"), а функции, объявленные в Greasemonkey, не попадают в глобальную область видимости.

Выделить код

Код:

var ttt=setInterval(pool,1000);

http://wiki.greasespot.net/Main_Page и в особенности http://wiki.greasespot.net/XPCNativeWrappers

Друзья, подскажите функцию-аналог симуляции клика для мозиллы:

Выделить код

Код:

<span onclick="alert('')" id='filo'>работает в IE</span>

<script>

document.getElementById('filo').click()

</script>
Tom_Creo пишет

функцию-аналог симуляции клика

https://developer.mozilla.org/en/DOM/do … reateEvent

Товарищи!
Что-то я туплю конкретно.
Как в версии 0.9.1 подключать новые сайты к скрипту?
Раньше было: «Управление скриптами» и таблица для добавления URL.
А теперь, что-то непонятно.
Неужели вручную в тексте скрипта?

0_4d97a_40675a40_M.jpg Крупнее

Добавлено:
Похоже, что только вручную.

Да как-то неожиданно обновили для пользователей... У меня остались некоторые скрипты выкл., как их теперь включить то? В поле одна пустота - установленных скриптов не видно. Кто-то разобрался, как бороться? Объясните популярно :rolleyes:

Skarm пишет

В поле одна пустота - установленных скриптов не видно. Кто-то разобрался, как бороться? Объясните популярно

В менеджере дополнений ничего не появилось?
см скриншот подкатом в спойлире:

скрытый текст
ff4b11grmon.JPG

Попробуйте перезагрузить Вашу тему или сменить тему на дефолтную.

RusDS
Спасибо чуток проту... Для всех! новая версия конфликтует с AiOS пришлось посленего отключить, что не есть хорошо -- больно привык к нему)

Skarm пишет

Для всех! новая версия конфликтует с AiOS пришлось посленего отключить, что не есть хорошо -- больно привык к нему)

Ставь бету AiOS - никакого конфликта с ней нет.

Извините, ничего не понял (

АиОС — даже не знаю, что такое и с чем едят, поэтому у меня его нет.

Всё-таки не ясно, как подключить конкретный скрипт к конкретной странице?
Мой скриншот с дефолтной темой я уже показывал:

скрытый текст
0_4d97a_40675a40_orig.gif

julios пишет

как подключить конкретный скрипт к конкретной странице?

julios пишет

Неужели вручную в тексте скрипта?

Похоже, что именно так. На самом деле, написать "// @include " перед URL в тексте скрипта не намного сложнее чем вставить этот URL в специально отведённое для этого поле. Зато теперь метаинформация обновляется сразу после изменения (и сохранения) скрипта, что очень удобно для разработчиков.

Я всё-таки немного не допонимаю ))
У меня скрипт задействован уже на нескольких десятках страниц.
Мне их все в тексте скрипта указать?
Это ж много, уважаемые!

Тем более не ясно, почему скрипт всё-таки продолжают работать на тех веб-страницах, которые были ранее «добавлены» через «диалог»?

Попытался разобраться, что пишут ребята в Гугл-группе.

Аргументы, какие-то странные там.
Придётся, всё-таки, за свой скрипт браться :rolleyes: :music:

julios пишет

У меня скрипт задействован уже на нескольких десятках страниц.
Мне их все в тексте скрипта указать?
Это ж много, уважаемые!

Если речь идёт о том, что надо портировать старые скрипты, то можно облегчить эту задачу выдрав нужные include из файла gm_scripts\config.xml, который лежит в текущем firefox профиле.

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

Что-то ты не то нашел :) Это обработчик для уже существующих линков.

По двойному клику - не знаю, есть такие что просто преобразуют все в линки, что-то из этой серии попробуй: http://userscripts.org/scripts/show/1352

Radow
а зачем скрипты ради этого? есть же нормальное дополнение Text Link.

shumomer, там именно открывался текст, который был несформатированной ссылкой. С короткими (базовыми) ссылками такой подход для меня приятнее линкифицирования (как делает Linkify Plus).
iDev.Pi: Спасибо, это был он.
>а зачем скрипты ради этого? есть же нормальное дополнение
Ну, обычно у меня противоположный подход: зачем нагружать систему еще одним расширением, если вопрос можно решить более легким и гибким скриптом?

Radow пишет

если вопрос можно решить более легким и гибким скриптом?

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

09-03-2011 15:31:25

Radow пишет

такой подход для меня приятнее линкифицирования

как объяснял мне Infocatcher - такой подход ещё и не оказывает задержки на загрузку страницы.

>скрипты в среднем глючней чем аналогичные им по функциям дополнения
В среднем - да, но если найти и испробовать что нибудь толковое, да еще и запретить ему обновления... music_mini.gif

Najlus пишет

Skarm пишет:Для всех! новая версия конфликтует с AiOS пришлось посленего отключить, что не есть хорошо -- больно привык к нему)Ставь бету AiOS - никакого конфликта с ней нет.

долго копался почему не открывается окно настроек, переустановил на бету и заработало http://firefox.exxile.net/forum/viewtop … =1&t=16106

Вопросы, скорее всего, глупые, но в первом подходе ничего не накопал:

1. Можно ли взять кусок простой "линейной" (типа body, h1, h2, p, p, table, table, h2, p, p... /body) страницы и как-то либо вообще вынести этот "кусок" в div либо как-то иначе ограничить его какими-то "метками" (как-то "нарисовать" вокруг именно этого куска тот же div?) для дальнейшей обработки?

2. Можно ли переместить любое содержимое ячейки одной таблицы в ячейку другой?

Т.е.
вместо

Выделить код

Код:

TABLE-1 :  TR-1.1 :  [TD-1].1.A  TD-1.1.B
TABLE-2 :  TR-2.1 :  TD-2.1.A  [TD-2].1.B

сделать

Выделить код

Код:

TABLE-1 :  TR-1.1 :  [TD-1].1.A  [TD-2].1.B
TABLE-2 ...

Если "да", то как, в самых общих чертах?

Кто-то использует скрипт Insta-click (Открыть вкладку правой мыши) на 4.0 начало вылезать контекстное меню, которого на 3.6 не было?
Как бороться?!

Skarm пишет

скрипт Insta-click

Попробуй одноимённый аддон https://addons.mozilla.org/en-us/firefox/addon/instaclick/ или Right Links

VitaR пишет

Вопросы, скорее всего, глупые, но в первом подходе ничего не накопал

А в чем именно проблема? В подобных задачах общий подход один - разбор DOM-структуры документа, и выполнение необходимых преобразований. И то, и другое - вполне решаемые задачи.

VitaR
Спасибо за оперативность! Тогда еще один Офтопик: стоит ли на лягать на скрипты или одноимённые аддоны юзать?

Как написать скрипт который бы нажымал ссылку два раз на определенной странице...????

Skarm, дело твоё. Скрипты намного гибче, всё можешь сделать сам, а аддоны пишет кто-то. Но нужны знания.

hydrolizer, главная проблема

в том, что
с яваскриптом я "на Вы" :) ибо только от случая к случаю в них заглядываю. Т.е. поскольку не дурак то сам разобраться могу, но мешает learning curve вкупе с отсутствием времени. Какой-нить чужой скрипт подошёл бы для jumpstart-а, но пока не смог найти подходящий

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

Изначально была мысль переделать десигн Руборда и подобных форумов под нетбучный экран, убрав несколько верхних таблиц в блок, который был бы сжат в узкую полоску вверху страницы.

В общих чертах я представляю, что нужно в одном месте вставить <div>, в другом, на несколько таблиц ниже, вставить </div>, и потом извращаться с ним как душе угодно -- прятать, перемещать и т.д. Но вот как именно вставить тег в конкр. место я что-то не могу врубиться :dumb:

Никто не в курсе как можно проиграть музыкальный файл через скрипт Greasemonkey?

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

Jetro а если посмотреть как это реализовано в расширениях, например DownThemAll! :)

Есть скрипты добавляющие что-либо на страницу about:blank? Найти не могу=(

А Greasemonkey умеет сам обновлять установленные скрипты (как Fx обновляет аддоны), или для этого обязательно устанавливать Script Updater http://userscripts.org/scripts/show/8877 ?

Если в скрипте прописано обновление, то обновит, нет - нет.

Примерно год назад Гугл ввел с моей точки зрения чрезвычайно неудобный просмотр картинок.
Я нашел скрипт "Old Google Images" , который запускается через greasemonkey
http://userscripts.org/scripts/show/82145
Но на FireFox 4 скрипт перестал работать.

Подскажите пожалуйста что можно придумать.
Может быть есть какая либо альтернатива?

Вариант нажать внизу "Переключитесь на упрощенную версию" не устраивает.

Вот нашел обновленный скрипт, но тоже почему то не срабатывает :(
http://userscripts.org/scripts/show/48293

Skorii у меня вот этот работает > Google Image Basic , но не в Greasemonkey а в Scriptish :)

Крошка Ру, спасибо! Сейчас попробую.
Работает!

Крошка Ру пишет

Jetro а если посмотреть как это реализовано в расширениях, например DownThemAll!

Не было времени заняться этим...
В целом идея хорошая, но вот реализовать это... В общем перерыл я около четырех плагинов, и безрезультатно. Пытался прикрутить сторонние скрипты на воспроизведение звука - аналогично. Проигрался я с этим больше недели, а получал или ошибки доступа, или возврат нулевых значений, или ошибки в коде.
В итоге реализовать такой скрипт у меня так и не получилось, помешало или то что в Greasemonkey это вообще сделать невозможно (прав у него мало) или у меня просто опыта в JS маловат (при чем скорее всего второе). Но где наша не пропадала - это я JS знаю плохо, а вот Delphi... В общем сделал ход конем - из Greasemonkey-скрипта данные передаются в мою софтину, а там уж я разгулялся по полной, и музыку воспроизводит, и нужные мне действия выполняет. Даже не знаю почему я так сразу не сделал и парился непонятно сколько с JS.

Jetro Скорее всего нужно было закинуть код скрипта на html страницу и там уже его выполнять. Я так делаю на ютубе что бы получить доступ к flash плееру.

Подскажите, есть ли скрипт, форматирующий номера сотовых операторов в формате 89********* в удобный вид, например, +7(9**)***-**-** ?
у нас на форумах стоит скрипт, автоматически форматирующий номера в неудобный вид (для поиска - ipb :(). Сам написать не могу — не разбираюсь в регэкспах, да и как поделить цельный номер в куски — тоже без понятия.

Однако, сварганил. Имеет смысл выкладывать его на usercripts или здесь ввиду его (скрипта) топорности и узконаправленности?

bodrox
да выложите на userscripts.org только название и описание на английском нормальное сделайте - вдруг кому пригодится.

не, уж лучше только тут. с английским плохо. да и выкладывать стыдновато такой костыль :).

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name    phonenumber-линкификатор
// @version    1.0
// @namespace    http://userscripts.org/scripts/show/88068
// @include     http://*
// @exclude    http://acid3.acidtests.org/*
// ==/UserScript==

document.addEventListener('DOMContentLoaded',function(){
// Регэксп для телефонов - первые два общие, последний для слитных номеров в РФ 
// надеюсь никто не смотрит странички про сложение 11 значных чисел и текстовые url с +№ в них? :)
const numberRegex = /(\+?\d{1,3}[\s\-]*\(\s*\d{2,4}\s*\)([\s\-]*\d{2,4}){2,3})|(\+?\d{0,3}[\s\(]+\d{2,3}[\s\)]+((\d{2,3}\-\d{2}\-\d{2})|(\d{2,3}\-\d{4})))|((\+7|^8)[\s\-\(]{0,2}\d{3}[\)\s\-]{0,2}\d{2,3}\-?\d{2}-?\d{2})/g;

function phonenumberformat(t) {
    // Замена номера 89********* в удобный вид +7(9**)***-**-**
    var fixedNum;
    fixedNum = '+7(' + String(t).charAt(1) + String(t).charAt(2) + String(t).charAt(3) + ')'
                 + String(t).charAt(4) + String(t).charAt(5) + String(t).charAt(6) + '-'
                 + String(t).charAt(7) + String(t).charAt(8) + '-'
                 + String(t).charAt(9) + String(t).charAt(10);
    return fixedNum;
}

// теги, в содержимом которых может быть номер телефона
var allowedParents = [ 'a', 'abbr', 'acronym', 'address', 'b', 'bdo', 'big', 'blockquote', 'body', 'caption', 'center', 'cite', 'dd', 'del', 'div', 'dfn', 'dt', 'em', 'fieldset', 'font', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'i', 'iframe', 'ins', 'kdb', 'li', 'nobr', 'object', 'pre', 'p', 'q', 'samp', 'small', 'span', 'strike', 's', 'strong', 'sub', 'sup', 'td', 'th', 'tt', 'u', 'var' ];

// иконка phonenumber
var phonenumberImage = 'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN2obAjRmU0R06BeDvDn2AEAAAAAAAAAALpnAP8AAAAAumcA/wAAAAAAAAAAumcA/7pnAP8AAAAAAAAAAM+MPwq1eTJOxoY0PM+MOhO8oG0EAAAAAAAAAAC6ZwD/AAAAALpnAP8AAAAAumcA/wAAAAAAAAAAAAAAANupbgXKhDOlu3sw/7F0Le/Tl1Bs0JBICAAAAAAAAAAAumcA/7pnAP+6ZwD/AAAAALpnAP8AAAAAAAAAAAAAAADYoWFjtXYt/dGRRv+7ey//sXQs+9GPQmLOijwBAAAAALpnAP8AAAAAumcA/wAAAAC6ZwD/AAAAAAAAAAAAAAAAzoo6xLJ0Lf/KhDP+0ZFH/ciDMv+aZSfi0I5CEgAAAAC6ZwD/AAAAALpnAP8AAAAAAAAAALpnAP+6ZwD/AAAAAMqEM9zAfTD/r3Is/8J/Mf/KhDP/uHguw9qnbA369e0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNiDfCzYc2/8WBMf+rcCv6iFkindKTSRwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0pNKS8qEM+3QjkH/zYc24rN1LTUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRkUZXyoQz9dCOQf/RkUfH3KRrIJh1AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANadWmzNhzb9zoo6/9COQsjYnVwpwIBQAwAAAAAAAAAArXErFKdtKmLCfzFCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1JlUf86KOv/Oijv/zYo60s+PQz8AAAAAAAAAAMJ/MZqzdS35uHgu7c2GNKbjvI4bAAAAAAAAAAAAAAAAAAAAAN+zfwHQj0KFzos7/s2KO//LhDLl0ZBEUtSZVBPKhDPbzoo8/7h4Lv+wcyz/zoo8twAAAAAAAAAAAAAAAAAAAAAAAAAA26lvAdGPRIHOizv60pJI/86KOvS6ei/OnWYn9dCOQv/QjkL9yoQz/rV2Lf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05ZPZM6JOenSlEz/05VO/8J/Mf+obir+zoo6/dGRRv+4eC7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIgzI30I5CqM6KOv/Tlk//z4w//7h4Lv+obir6xYExdwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCPRAq3eC5EtXYti7h4LqywcyyRpWwpPgAAAAAAAAAAw1kAAINXAAADFwAAAVcAAAFZAAAA/wAAA/8AAAf/AACB/wAAwMcAAODBAADgAQAA8AEAAPwBAAD+AQAA/wMAAA==';

var xpath = '//text()[(parent::' + allowedParents.join(' or parent::') + ')]';
var candidates = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

for (var cnd = null, i = 0; (cnd = candidates.snapshotItem(i)); i++) {
    if (numberRegex.test(cnd.nodeValue)) {
        var span = document.createElement('span');
        var source = cnd.nodeValue;
        
        cnd.parentNode.replaceChild(span, cnd);
    
        numberRegex.lastIndex = 0;
        for (var match = null, lastLastIndex = 0; (match = numberRegex.exec(source)); ) {
            span.appendChild(document.createTextNode(source.substring(lastLastIndex, match.index)));
            
            var img = document.createElement('img');
            img.setAttribute('alt','phonenumber');
            img.setAttribute('title', 'phonenumber');
            img.setAttribute('style', 'vertical-align:top; margin-right: 4px;');
            img.setAttribute('src', phonenumberImage);

            var a = document.createElement('a');
//            a.setAttribute('style', 'vertical-align:middle;');
            a.appendChild(document.createTextNode(phonenumberformat(match[0])));

            span.appendChild(img);
            span.appendChild(a);
    
            lastLastIndex = numberRegex.lastIndex;
        }
    
        span.appendChild(document.createTextNode(source.substring(lastLastIndex)));
        span.normalize();
    }
}
}, false);

При попытке изменить скрипт, в блокноте открывается пустая страница. Как сделать, что бы открывался скрипт?
eac67bd918bc.jpg

Skarm пишет

стоит ли на лягать на скрипты или одноимённые аддоны юзать?

Скрипт всегда запускается только после загрузки страницы, а адон ведет себя так, как написал его автор, т.е. вполне может замедлять загрузку страниц.

P.S.
По-уму, вобще желательно создать отдельную тему касательно скриптов.

Raf-9600 пишет

Так как темы про Scriprish почему-то до сих пор не создали.....

Raf-9600
Scriptish - менеджер скриптов для Firefox :angel:

Крошка Ру
Благодарю, перенес сообщение туда.

Установил сегодня FF 5.0 и GM не подгружает скрипты. Меню аддона доступно, можно покавыряться в настройках, но сами скрипты не работают. Версия GM 0.9.5. Поделитесь рабочей версией.

:::: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0

Sergik1 ,всё что могу предложить - попробуйте вместо Greasemonkey Scriptish - менеджер скриптов для Firefox (пост №30 - прямая ссылка на исправленную версию) :)

Спасибо за отзыв, но с Scriptish та же ситуация - скрипты не срабатывают, хотя визуально расширение работает, меню открывается, можно включить/выключить скрипт.
:/

Sergik1 все скрипты? а у меня в [nightly] 7.0a1 работают :sick: .... или просто скрипты другие :angel:......может только в [firefox] 5.0 так?

Да, абсолютно все :(  Попробую сейчас на чистом профиле, но всё равно сомнительно. Ведь 2 отдельных расширения для скриптов такое выдают... позже отпишусь.

П.С. Да, так и есть, на новом профиле тоже скрипты не срабатывают. Похоже скрипты не ассоциируются с адресом страницы для которой они написаны, т.е. не знают, что им нужно в данный момент отработать.

Вот скрины, показан код скрипта, он для страницы Гугла и собственно скрин меню scriptish при открытой странице Гугла. Скрип т не подгружается.

21389251.th.png

28596409.th.png

Sergik1 , у меня из шести установленных:
Google Classic
Google Image Basic
Pure Reader
Google Reader Full Feed Mod
Youtube Prevent Autoplay
только один не работает >
Google Reader Colored
:)

По логу ошибок в консоли на jabber конференции поддержки сказали, что в ФФ 5.0 изменили js движок и теперь некоторые скрипты не будут работать, их нужно допиливать. Дело не в расширениях.

Подскажите пожалуйста такую штуку.
Есть страница на сайте.
там есть всплывающее окошко, в котором идет информация и кнопка "Обновить".
Можно ли как то сделать, Чтобы эта кнопка автоматом нажималась ну скажем раз в 5-10 секунд.

П.С. Обновление страницы не подходит.

Skorii
Ответ положительный.

CoolCmd
Подскажите пожалуйста как это сделать.
Какие данные о странице предоставить?
Вот так это выглядит (ссылку на картинку в спойлер засунул)

скрытый текст
http://s2.ipicture.ru/uploads/20110720/Ru42LLMd.jpg

Уважаемые езнатоки JavaScript, помогите решить задачку...
Имеется страница, на ней около сотни div-ов, но автор страницы очень уж исхитрил и создал такой код:

Выделить код

Код:

<div class="obs_confirm" _enab="8">......</div>

Код этот работает, но я что-то никак не соображу как можно отловить в Greasemonkey нужный мне див и сделать по нему click или послать ему onMouseOver. У каждого дива этого класса есть атрибут "_enab="N" ", где N число от 0 до 93. Поскольку не силен в JavaScript, то всю репу уже расчесал себе, в попытках нагуглить хоть что-то.

document.querySelector("[_enab=8]")

https://developer.mozilla.org/En/DOM/Document.querySelector
https://developer.mozilla.org/en/DOM/document.createEvent#Example

07-09-2011 15:23:55
Впрочем, если на странице подключен jQuery, то всё ещё проще
jQuery('[_enab=8]').click()

Что-то я ничего не понимаю... Весь уже измучился :(
Уже создал тестовую страничку с самым примитивным содержанием, но никак не могу заставить скрипт найти элемент...
Вот страничка:

Выделить код

Код:

<html>
<head>
</head>
<body>
<div id="test-div-id">NO</div>
</body>
</html>

Вот скрипт:

Выделить код

Код:

window.checkdiv = function () {
    ADS = document.getElementById('test-div-id');
    if (ADS != null) {
        alert('Find');
    } else {
        alert('None');
    }
}

checkdiv();

Вообще не выдает алерта... ЧЯДНТ?

http://wiki.greasespot.net/Avoid_Common … easemonkey
Для конкретно этого примера:

Выделить код

Код:

function checkdiv() { ... }
checkdiv();

И лучше var ADS = ...

Пробовал так же как Вы советуете - не видит элементов ни в какую. :(

тут у нас новый раздел появился, куда планируется перенести обсуждение скриптов.
так вот в нём сейчас структура такая, что планируется там все топики держать вперемешку.
Я открыл голосование с предложением разделить на подразделы, отделив скрипты, стили и кб в разные разделы, и чтоб в каждом из них было ещё по 2 подраздела: для тем-обсуждений готовых, например, скриптов и для тем-вопросов (типа "а как сделать такой-то скрипт?")
Прошу всех проголосовать.

iDev.Pi пишет

тут у нас новый раздел появился, куда планируется перенести обсуждение скриптов.так вот в нём сейчас структура такая, что планируется там все топики держать вперемешку.Я открыл голосование с предложением разделить на подразделы, отделив скрипты, стили и кб в разные разделы, и чтоб в каждом из них было ещё по 2 подраздела: для тем-обсуждений готовых, например, скриптов и для тем-вопросов (типа "а как сделать такой-то скрипт?")Прошу всех проголосовать.

Спасибо Unghost-у, наконец-то право голосовать есть у всех.

Я не понял, коллеги, Greasemonkey  работает на Seamonkey 2.4.1  или нет ?

Коллеги,напишите кто ставил скрипт :/ (позволяет просматривать достижения пользователя в игре "Тюряга" ВКОНТАКТЕ)
Version: 0.91 [firefox]

http://userscripts.org/scripts/show/113099

Это случаем не троян,не ворует и отсылает пассы???

Подскажите скрипт для вставки определенного текста в нужные поля ввода на конкретном сайте.

скрытый текст
Вот этот сайт
автоматом вставить текст в три поля для ввода

okkamas_knife
спасибо, но из-за одного сайта неохота ставить лишнее дополнение...

Inko7
Вом автоматическую авторизацию надо чтоли сделать? :?

megane
ага
не прибегая к сторонним дополнениям

Inko7
Вообще то есть дополнение Secury Login, которое для этого предназначено. Оно для всех сайтов подходит и всегда пароль посмотреть  можно и даже несколько акаунтов одного сайта позволяет авторизовывать.
Конкретно с этим сайтом надо проверять, потому что там три поля для ввода.

эсть CB кнопка Auto Login может ее можно как то приспасобить,
в инициализацию;

скрытый текст

Выделить код

Код:

var apps,srcUrl,MItem,mPop;

function onLoad(uname,pass)
{
alert("Please wait a sec..");
form_fill(uname,pass);
}

function loadPage(evt)
{
    var url=evt.target.value;
    var name=evt.target.name;
    var pass=evt.target.pass;
    gBrowser.selectedTab=gBrowser.addTab(url);
    function load(){
         if (content.document.title.length>0)
         {
        onLoad(name,pass);
         } else {
         setTimeout(load.bind(this),1000);
         }
    };
    load();
}

function submit_form()
{
    submit_it(gBrowser.contentDocument.getElementsByTagName("BUTTON"));
    submit_it(gBrowser.contentDocument.getElementsByTagName("INPUT"));    
}

function submit_it(obj)
{
for(var i=0;i<obj.length;i++)
    {
        if(obj[i].type=="submit")
        {
            obj[i].click();
            break;
        }
        if(obj[i].type!="hidden" && (obj[i].type=="button"))
            {
                var n=obj[i].name.toLowerCase();
                var v=obj[i].value.toLowerCase();
        if(n.match("submit") || n.match("login") ||v.match("submit") ||v.match("login")||n.match("sign") ||v.match("sign"))
            {
                obj[i].click();
                break;
            }    
            }
    }
}
function form_fill(username,passwd)
{
    var obj= gBrowser.contentDocument.getElementsByTagName("INPUT");
    for(var i=0;i<obj.length;i++)
    {
        if(obj[i].type!="hidden")
        {
            if(obj[i].type=="text")
            {
                var n=obj[i].name.toLowerCase();
                if(n.match("name") || n.match("login")||n.match("mail"))
                obj[i].value=username;
            }
            if(obj[i].type=="password")
            obj[i].value=passwd;
    
        }
    }
submit_form();
}

function getIndex(opt,value)
{
    for( var i=0;i<opt.length;i++)
    {
        if(opt[i].text==value)
        return i;
    }
}

//------menu items--------
var Img=this.image;
apps=new Array;
apps.push(['Yahoo','http://www.yahoomail.com','username','pass',Img]);
apps.push(['Gmail','http://www.gmail.com','username','pass',Img]);
apps.push(['Rediff','http://www.rediffmail.com','username','pass',Img]);
apps.push(['separator']);




//------/menu items-------

MItem=function(value){
  var mItem=document.createElement('menuitem');
  mItem.setAttribute('label',apps[value] [0]);
  mItem.value = apps[value] [1];
  mItem.name= apps[value] [2];
  mItem.pass= apps[value] [3];
  mItem.tooltipText = apps[value] [0];
  mItem.setAttribute('class','menuitem-iconic bookmark-item');
 mItem.setAttribute('image',apps[value] [1]);
  return mItem;
}



//this.orient="vertical";
mPop=document.createElement('menupopup');
for (var i=0;i<apps.length;i++){
 if (apps[i] =='separator'){
  mPop.appendChild(document.createElement('menuseparator'));
 }else{
  mPop.appendChild(MItem(i));
 }
}

this.siteGo=function(evt)
{
loadPage(evt);
}



this.appendChild(mPop);
this.type = "menu-button";
this.tooltipText=this.label;
this.setAttribute("oncommand", "this.siteGo(event);");
this.value="http://yahoomail.com";
this.name="username";
this.pass="pass";

Только у меня greasmonkey на [firefox]7 и [firefox]9 заставляет браузеры дико жрать процессорные ресурсы, вплоть о 50%?

bunda1
я мало что понимаю в кодах... :(

Был рабочий, редко используемый старый скрипт с такими строчками:

var w = window.wrappedJSObject; // для доступа к скриптам основной страницы
var g = w.someframe; // для доступа к скриптам страницы в iFrame someframe

Затем достаточно было написать, например var v = g.somevalue; и все работало. Чтобы получить данные основной страницы из фрейма в свою очередь, хватало w.parent; где w, тот же враппер но фрейма, изнутри.

Ну вот, не знаю что обновилось, или GM, или сайт для которого он был написан, но халява обломилась. Сначала вообще не мог понять почему все перестало работать, потому что инспекция кодов сайта ничего не показала: все по-старому.

Когда разобрался, методом научного самотыка, оказалось надо теперь делать так:

var w = window.wrappedJSObject;
var g = w.someframe.wrappedJSObject;

и для топового окна из фрейма

var p = w.parent.wrappedJSObject;

Смотрел новости по обновлениям ГМ, искал отголоски в инете: пусто. Вопрос риторический: что это могло быть?

Оказывается надо делать канонически. Сначала получить реф на окно фрейма, например по имени:

var iFrame = document.getElementsByName(iFrameName)[0].contentWindow;

а потом уже заварпить: var wFrame = iFrame.wrappedJSObject;

Теоретически первое можно сделать через window.frames[iFrameName] - не проверял.

Кто шарит в скриптах, есть скрипт очень хороший Mouseover Popup Image Viewer, который прекрасно работает с картинками с fastpic.ru но только если они в jpg, а если там png то не хочет показывать, как можно поправить скрипт чтобы работал с png?
Уточню, если ссылка имеет вид http://fastpic.ru/view/32/2011/1008/a70870514407d82319fc45112242fab9.png.html то тогда не грузит, а если вида http://i32.fastpic.ru/big/2011/1008/33/2ffe66e3a209dfd74eeea3421430a233.png то тогда нормально.

Как оказалось дело не в png формате, а в том, что скрипт не работает на рутрэкере, даже если скриншоты в jpg:/ что делать?

Как заблокировать выполнение этого скрипта

Выделить код

Код:

var a = new Date;
    if (18 == a.getDate() && 0 == a.getMonth() && 2012 == a.getFullYear()) {
        window.location = "http://sopastrike.com/strike";
    }
Kamui пишет

есть скрипт очень хороший Mouseover Popup Image Viewer, который прекрасно работает с картинками

создал тему по нему, для оформления темы нужна помощь знающих JS - http://forum.mozilla-russia.org/viewtopic.php?id=53339

Есть такой сайт MTS - Ребенок под присмотром. При авторизации на нем, FF не предлагает сохранить для него пароль. Поэтому решил проблему скриптом:

Выделить код

Код:

// ==UserScript==
// @name           MTS Poisk - Autologin
// @include        http://www.poisk.mts.com.ua/MTS_WEB/*

document.getElementById("loginUsername").value = "мойлогин";
document.getElementById("loginPassword").value = "мойпароль";

Осталась только одна проблемка: как кнопку "Вход" автоматом нажать?
Пробовал и так:

Выделить код

Код:

document.getElementById("DefButton").click();

и так:

Выделить код

Код:

document.getElementById("DefButton").submit();

не получается...
Знающие люди, подскажите!

Inko7
У меня все работает, только я там не зареген и пишет, что не верные логи и пароль.

22-01-2012 14:45:58
f720ca79e777.jpg

Выделить код

Код:

// ==UserScript==
// @name Autologin
// @namespace      http://www.poisk.mts.com.ua
// @include http://www.poisk.mts.com.ua/MTS_WEB/*
// @description    Autologin on http://www.poisk.mts.com.ua
document.getElementById("loginUsername").value = "мойлогин";
document.getElementById("loginPassword").value = "мойпароль";
document.getElementById('DefButton').click();

Void Dragon
Прошу прощения! Действительно все работает, нужно было перезапустить браузер.
Спасибо! :beer:

Greasemonkey скрипты работают только, если на странице включены скрипты или всегда?

Void Dragon
Всегда, но с отключенными скриптами не работают функции setTimeout() и setInterval(). Возможно, какие-то еще.

Комрады, есть ли скрипты, меняющие

Выделить код

Код:

<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">

на windows-1251?

bodrox

Выделить код

Код:

// ==UserScript==
// @name my.site.windows-1251
// @namespace      http://www.my.site
// @include http://www.my.site*
// @description    my.site = windows-1251
document.getElementsByTagName("META").getElementsByAttribute("content", "text/html; charset=iso-8859-1").charset = "text/html; charset=windows-1251";

Попробуй. Но getElementsByAttribute(charset, value) не стандартная, не знаю как Greasemonkey поддерживает её.

Добавлено: Ошибся, поправил.

22-01-2012 22:58:27
Но это не для всех сайтов наверное, тут ищет по точному соответствию значения атрибута, чтобы было универсальным надо поиск подстроки использовать. Т.к. иногда могут быть лишние пробелы.

Void Dragon пишет

bodrox
Но это не для всех сайтов наверное, тут ищет по точному соответствию значения атрибута, чтобы было универсальным надо поиск подстроки использовать. Т.к. иногда могут быть лишние пробелы.

Спасибо. Не хочет только. Извините, забыл сказать, что это для

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

хотел. Письма в кириллице приходят, каждый раз вручную надо править. Смотрю в исходном коде, всё та же кодировка указана.

bodrox
Извини, может не в тему, но чем Charset Switcher не устраивает?

Inko7 пишет

bodroxИзвини, может не в тему, но чем Charset Switcher не устраивает?

Спасибо, а я искал «codepage» :(.

День добрый!
уже неделю сижу вот с такой вот задачей...
есть кнопка...

Выделить код

Код:

<div class="center-buttons">
<a href="#" id="list_num" onclick="return list();" class="orange-btn-wide">
<img src="/images/img/img.png" alt="" height="60" width="60" /><span>Список</span></a>
</div>

Пытаюсь через GM автоматически на нее кликнуть...

Выделить код

Код:

var ButtomTAG = document.getElementById("list_num").getElementsByTagName("span");
for (var i = 0; i < ButtomTAG.length; i++) {
    if (ButtomTAG[i].firstChild.textContent == "Список") {
        ButtomTAG[i].click();
        break;
    }
}

и ни фига :(
самое интересное что с кнопками типа:

Выделить код

Код:

<div id="Part_1">
<div data-tutorial='2'>
<a class="button grey6" href="javascript:rand(0);"><span>Перейти</span><em></em></a>
</div>
</div>

такой скрипт пашет...
как быть? выручайте :)

Попробуй через jQuery


var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);
function GM_wait() {
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
    else { $ = unsafeWindow.jQuery; letsJQuery(); }
}
GM_wait();
function letsJQuery() {


$('#list_num').click();

}

questman
чет ни фига :)
на странице походу уже подключен QJ

Benos пишет

questmanчет ни фига на странице походу уже подключен QJ
                    Отредактировано Benos (Вчера 20:10:22)

Если подключен то вторую строчку кода удалите или за комментируйте.
А почему не работает не знаю.Я таким кодом пользуюсь очень часто и всё работает нормально.
Попробуйте клик засунуть в

setTimeout(function(){
    $('#list_num').click();
},1000);

questman
что то ни как...
я так понимаю этот код означает что JQ включен

Выделить код

Код:

<script src="/Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>

но в тестовом варианте даже элементарный код не пашет...

Выделить код

Код:

$(document).ready(function(){ alert('тест')});

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

Выделить код

Код:

GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';

то на сайте перестает работать кнопка

var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';//Подключаем\отключаем jQuery с офф-сайта или можно локально в base64
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);
function GM_wait() {
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
    else { $ = unsafeWindow.jQuery; letsJQuery(); }
}
GM_wait();
function letsJQuery() {

     Свой код здесь
   
}

Всё пашет без проблем.

вы правы... код пашет... но есть беда... :(
в таком варианте все работает на ура:

Выделить код

Код:

var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';//Подключаем\отключаем jQuery с офф-сайта или можно локально в base64
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

function GM_wait() {
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
    else { $ = unsafeWindow.jQuery; letsJQuery(); }
}

GM_wait();

function letsJQuery() {
    $(document).ready(function(){ alert('тест')}); 
}

а в таком ни фига не пашет :(

Выделить код

Код:

var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';//Подключаем\отключаем jQuery с офф-сайта или можно локально в base64
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

function GM_wait() {
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
    else { $ = unsafeWindow.jQuery; letsJQuery(); }
}

GM_wait();

function letsJQuery() {
    $(document).ready(function(){$('#list_num').click();});
}

я так думаю ошибка в строке с кликом.

function letsJQuery() {
$(document).ready(function(){ //А это зачем?

    $('#list_num').click();

});

}
function letsJQuery(){//Вот так

   $('#list_num').click();

}

Вот мои примеры

$('div.form_value img').click();

$('input#captcha, #captcha_login').focus();

setTimeout(function() {
$('button:contains(Continue)').click();
  }, 1000
);

Ну и так далее.

questman
Запахало... переписал код цикла проверки подключения JQ...
в начале проверяем , а потом подключаем если надо...  и все за пахало... спасибо! :)

Пример если нужно кому :)

Выделить код

Код:

if(unsafeWindow.jQuery == 'undefined'){
    var GM_JQ=document.createElement('script');
    GM_JQ.src='http://jquery.com/src/jquery-latest.js';
    GM_JQ.type='text/javascript';
    document.getElementsByTagName('head')[0].appendChild(GM_JQ);
    function GM_wait(){
        if(typeof unsafeWindow.jQuery == 'undefined'){
            window.setTimeout(GM_wait,100);
        }else{
            $=unsafeWindow.jQuery;
            GM_JQ_fun();
        }
     }
    GM_wait();
}else{
    $=unsafeWindow.jQuery;
    GM_JQ_fun();
}

function GM_JQ_fun()
{
  setTimeout(function() { $('#list_num').click(); }, 2000 );
}

можно ли и как отключить обновление выбранного скрипта?

Запахало... переписал код цикла проверки подключения JQ...
в начале проверяем , а потом подключаем если надо...  и все за пахало... спасибо!

Ну вот классно!
Согласитесь что использования jQuery для отбора всякого рода кнопок и других элементов намного удобнее чем чистый JavaScript.
Я не пожалел что предложил вам использовать jQuery.Переписанный вами код подключения библиотеки оказался мне чрезвычайно
полезным.
Так что это вам спасибо!

vitalii201

можно ли и как отключить обновление выбранного скрипта?

Зайти в управление скриптами (в about:addons), выбрать нужный скрипт и отключить автообновление через контекстное меню.

vitalii201 пишет

можно ли и как отключить обновление выбранного скрипта?

ПКМ по скрипту - убрать галку авто обновление. Не?

MySh пишет

через контекстное меню

Void Dragon

всё равно при "Проверить обновления" висит "Обновление дополнений".

vitalii201
Где чего висит? :rolleyes:

MySh пишет

Где чего

в about:addons при ...

скрытый текст
image002lc.png

есть скрипт последние upd которого не удачны. автору писал и т.д. поставил старый, работающий вариант(от2011.12.18). но теперь при общей проверке дополнений процесс не заканчивается.
скрытый текст
image003k.png

День добрый!
возник такой вопрос...
где можно посмотреть описание символов представленных в виде...

Выделить код

Код:

...\u003e\r\n\t\u003cdiv class=\"content\"\u003e\r\n\t\t\u003...

а то чет их в коде страницы до дури... есть мне не знакомые)))

Benos
Возможно вам окажется полезным http://habrahabr.ru/blogs/infosecurity/137071/

Но вообще это похоже юникод, т.е. \u003e обозначает какой-то символ. \n - это перенос строки \t и \r тоже что-то подобное.

06-02-2012 00:14:54
У меня почему-то не работают некоторые скрипты. Например:
https://userscripts.org/scripts/show/6482
и
https://forum.mozilla-russia.org/viewtopic.php?id=53349

Проверит кто?

Void Dragon пишет

Benos
Возможно вам окажется полезным http://habrahabr.ru/blogs/infosecurity/137071/
Но вообще это похоже юникод, т.е. \u003e обозначает какой-то символ. \n - это перенос строки \t и \r тоже что-то подобное.

то что это юникод эт я понял.. и судя по коду пару сиволом вычислил... но там еще символы есть... и вот что это за сиволы.. фиг знает :)

vitalii201

в about:addons при ...

Странно, у меня такого нет.

А если в самом скрипте попробовать @updateURL поменять?

MySh пишет

А если в самом скрипте попробовать @updateURL поменять?

что-то – нет. та ладно, я то знаю из-за чего это. обновляется-то всё без проблем.
upd: а, да. разобрался. спасибо.

Всем день добрый!
столкнулся еще с одной задачей... брюсь уже 4 день.. что то в пустую :(
есть страница... на ней есть кнопка... при определенных обстоятельствах... после клика по ней всплывает окошко... с информацией об ошибке... вот как это окошко выцепить ума не приложу... в коде станицы ни чего не видать...
когда окно активно... добавляется только этот код...

Выделить код

Код:

jQuery(document).ready(function () {jQuery.sitecore.messaging.processErrors( [{"error":"list.activ"}]);});
Benos пишет

Всем день добрый!столкнулся еще с одной задачей... брюсь уже 4 день.. что то в пустую есть страница... на ней есть кнопка... при определенных обстоятельствах... после клика по ней всплывает окошко... с информацией об ошибке... вот как это окошко выцепить ума не приложу... в коде станицы ни чего не видать...когда окно активно... добавляется только этот код...
Код:

Выделить код

Код:

jQuery(document).ready(function () {jQuery.sitecore.messaging.processErrors( [{"error":"list.activ"}]);});

вопрос решил... коряво но решил))
теперь другой вопрос :(
добавляю свою кнопку на сайт...

Выделить код

Код:

var MenuTAG = document.getElementById('menu')
var MenuBUT = document.createElement('li');
    MenuBUT.innerHTML = '<a href="javascript:test();">MyButtom</a>';
    MenuTAG.appendChild(MenuBUT);

function test(){
    location.href="http://www.yandex.ru/";
   //alert('TEST');
}

Функцию ТЕСТ не вызывает? как быть? в чем не прав? подскажите пжл.

Я попробовал у меня всё работает.
И вот так тоже работает.

var MenuTAG = document.getElementById('menu')
var MenuBUT = document.createElement('li');
    MenuBUT.innerHTML = '<a onclick="test()" href="#">MyButtom</a>';
    MenuTAG.appendChild(MenuBUT);
function test(){
   alert('TEST');
};

questman
у меня чет не пашет :)
ладно буду думать :)
код user.js

Выделить код

Код:

// ==UserScript==
// @name          MyButtom(TEST)
// @description   MyButtom(TEST)
// @include       http://www.ya.ru/*
// @version       1.0
// ==/UserScript==

var MenuTAG = document.getElementById('head');
var MenuBUT = document.createElement('li');
    MenuBUT.innerHTML = '<a href="#" onclick="test()">MyButtom</a>';
    MenuTAG.appendChild(MenuBUT);

function test(){
   alert('TEST');
};
Benos пишет

у меня чет не пашет :)

И не должно: http://wiki.greasespot.net/XPCNativeWrappers

Infocatcher пишет
Benos пишет

у меня чет не пашет :)

И не должно: http://wiki.greasespot.net/XPCNativeWrappers

а про комментировать можно чуть чуть?
я не очень силен в JS...
буду очень благодарен :)

Benos пишет

а про комментировать можно чуть чуть?

Infocatcher имеет ввиду что вот так будет правильно.

var MenuTAG = document.getElementById('menu')
var MenuBUT = document.createElement('li');
MenuBUT.innerHTML = '<a href="#">MyButtom</a>';
    MenuBUT.addEventListener("click", test, false);
    MenuTAG.appendChild(MenuBUT);
   
    function test(event) {
     
     alert('Работает');
   
}

12-02-2012 12:48:01

Benos пишет

var MenuTAG = document.getElementById('head');

var MenuBUT = document.createElement('li');
MenuBUT.innerHTML = '<a href="#">MyButton</a>';
document.getElementsByTagName('body')[0].appendChild(MenuBUT);

понял где не прав... но правда пока не понял почему :)
спасибо :)

Benos пишет

но правда пока не понял почему :)

Со стороны страницы функции, объявленные в Greasemonkey, не видны:

Выделить код

Код:

function f1() {
    alert(0);
}
window.f2 = function() {
    alert(1);
};
unsafeWindow.f3 = function() {
    alert(3);
};

var a = document.createElement("a");
a.href = "javascript: alert(typeof f1 + ' ' + typeof f2 + ' ' + typeof f3);"; // undefined undefined function
a.appendChild(document.createTextNode("<test>"));
document.body.appendChild(a);

Но использовать unsafeWindow небезопасно – теоретически страница сможет получить доступ к GM_* функциям.

Portable Firefox 10 + Gracemonkey. При нажатии на кнопку "Установить скрипт" ничего не происходит(( Переустановка расширения не помогает. WTF?

Altalion
Скрипт вообще не появляется в установленных и что? Любой?

Кстати, может кто знает, почему в последних версиях GM перестал появляться тултип об успешной установке скрипта? Раньше было удобней...

Inko7 пишет

Скрипт вообще не появляется в установленных и что? Любой?

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

кто-нибудь может подсказать, как скриптом автоматом нажимать кнопку закрытия банера в рамблер-почте?
b62747a7245bt.jpg
Сейчас сам банер блокируется Адблоком, а пустое место с кнопкой остается, пока на нее не нажать.

Inko7
а просто скрыть её адблоком - не?

iDev.Pi
саму кнопку скрыть можно, а как место "схлопнуть"?
ведь по нажатию по кнопочке вся область под банер убирается, а область для писем раздвигается на всю ширину

Inko7
указать не на саму кнопку, а на её родителя.

iDev.Pi
у меня так не получается :(
область писем не расширяется на освободившееся место

Inko7 пишет

кто-нибудь может подсказать, как скриптом автоматом нажимать кнопку закрытия баннера в рамблер-почте?

Я такие вопросы уже давно решаю так:
В скрипт встраиваю jQuery после фаирбагом нахожу нужный элемент и пишу например такой код $(#element).click();

questman пишет

В скрипт встраиваю jQuery

для меня это темный лес
но все равно спасибо, почитаю для общего развития

Привет всем!
У меня такой вопрос.
Вот смотрите существуют определённые события в javascript.Такие как клик,наведение курсора,нажатие клавиши,загрузка страницы,скролинг и так далее.
При наступлении этих событий происходит какое то действие.Но как сделать не стандартное событие? Например есть блок div на странице,через определённое время он становится полупрозрачным.
Вот становление блока полупрозрачным это и есть собственно нестандартное событие.Как сделать так чтобы выполнилось действие после того как блок стал полупрозрачным?
Или например был блок и через некоторый промежуток времени внутри него появился ещё какой то объект.Как поймать это событие и повесить на него действие?
Может кто знает? Или может поделится ссылками на инфу?

questman пишет

Как сделать так чтобы выполнилось действие после того как блок стал полупрозрачным?
Или например был блок и через некоторый промежуток времени внутри него появился ещё какой то объект.Как поймать это событие и повесить на него действие?

https://developer.mozilla.org/en/DOM/DO … DOM_events
Смена стиля – или DOMAttrModified, или DOMNodeInserted/DOMNodeRemoved – смотря каким образом задается стиль.
Добавление узлов – DOMNodeInserted.

Infocatcher пишет

https://developer.mozilla.org/en/DOM/DO … DOM_events
Смена стиля – или DOMAttrModified, или DOMNodeInserted/DOMNodeRemoved – смотря каким образом задается стиль.
Добавление узлов – DOMNodeInserted.

О спасибо!
А то я как обычно слышу звон но не знаю где он.Не знаю с чего начинать поиски.
Искал "собственные события","тригер" и так далее.Но ни чего внятного естественно не нашёл.

Ребята кто нибудь знает как при помощи Greasemonkey изменить существующие скрипты на страницах?
Прямо вклинится и поменять значения переменных на свои например.
Я умею такой трюк проделывать с функциями но вот тот код который не заключён в функции мне не подвластен.
Может кто что посоветует?

как поменять meta charset странице по средствам только userscript'а или javascripta (можно с библиотеками)?

questman пишет

Ребята кто нибудь знает как при помощи Greasemonkey изменить существующие скрипты на страницах?
Прямо вклинится и поменять значения переменных на свои например.
Я умею такой трюк проделывать с функциями но вот тот код который не заключён в функции мне не подвластен.
Может кто что посоветует?

Так как я разобрался с этим то отвечу сам себе.Мало ли может кому пригодится.

location.href = "javascript:void(window.переменная = 'значение'"; 

22-05-2012 09:28:34

Krechet2013 пишет

как поменять meta charset странице по средствам только userscript'а или javascripta (можно с библиотеками)?

Я правда не пробовал.
meta это же тоже тэг.
Найти его на странице и поменять его значение атрибутов на нужные.

questman unsafeWindow.переменная = значение;

questman пишет

Я умею такой трюк проделывать с функциями но вот тот код который не заключён в функции мне не подвластен.

ищи нужный текст в тэгах script и его изменяй.

CoolCmd пишет

questman unsafeWindow.переменная = значение;

О!
Покороче будет.Надо попробовать.
Спасибо!

questman
тег меняется но страница не обновлется - не перерендеривается
И мало того если воткнуть скрипт перед началом страницы и забубенить meta сразу после скрипта (или даже взаместо него в jquery это тупо $([html-dom код]); ), то всё равно страница в прежней кодировке, при этом присутсвуют 2 meta тэга и нужный идёт первым, но кодировка всё равно с другого. Проверял в оффлайне - выгрузив страницу - то есть из htasccess ничего не регламентирует charset. Получается браузер просто перескакивает только что созданное meta.

А тема актуальная не только для меня - ещё тут с пяток парней наберётся кому такой трюк нужен.

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

Krechet2013 пишет

тег меняется но страница не обновлется - не перерендеривается
И мало того если воткнуть скрипт перед началом страницы и забубенить meta сразу после скрипта (или даже взаместо него в jquery это тупо $([html-dom код]); ), то всё равно страница в прежней кодировке, при этом присутсвуют 2 meta тэга и нужный идёт первым, но кодировка всё равно с другого. Проверял в оффлайне - выгрузив страницу - то есть из htasccess ничего не регламентирует charset. Получается браузер просто перескакивает только что созданное meta.

А тема актуальная не только для меня - ещё тут с пяток парней наберётся кому такой трюк нужен.

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

Гризманки выполняет все скрипты в своей песочнице.
А что если прилепить скрипт непосредственно обойдя песочницу.
Например так:

var script = document.createElement('script');
script.setAttribute("type", "application/javascript");
script.textContent = source;
document.body.appendChild(script);
document.body.removeChild(script);
}
contentEval("свой код,например документГетЭлементБайТэгНэйм и так далее");

Помогите, плиз, в GM слетели все скрипты (тупо не видит их)

Такое уже было один раз на другом компе, тогда помогло отключение/включение GM с перезагрузкой браузера
Сейчас ничего не помогает

Скриптов с настройками очень много, заново качать и настраивать это убиться можно.
Как исправить?

Atos пишет

Скриптов с настройками очень много, заново качать и настраивать это убиться можно.
Как исправить?

скрипты лежат в папке профиля gm_scripts - папку скопировать - GM удалить - поставить заново - скрипты вернуть обратно
должно сработать ящитаю

01-06-2012 19:41:10
или просто переустановить GM

спасибо, помогло вроде

Тема перенесена из форума «Обсуждение расширений» в форум «Скрипты».

Что случилось с GreaseMonkey? Почему я раньше просто открывал свои скрипты в браузере и они устанавливались, а теперь открываю, и ничего не происходит?

Как нормально установить свои скрипты?

26-08-2012 08:37:18
Почему раньше был нормальный список скриптов, а теперь чёрт знает что, и ничего не работает? На какой скрипт не нажму "изменить", всё не работает. Б... ! Испоганили GreaseMonkey уроды.

Можно как-то восстановить предыдущую версию GreaseMonkey?

Minor пишет

уроды

Кто? Авторы столь любимого расширения?

Minor пишет

Можно как-то восстановить предыдущую версию GreaseMonkey?

https://addons.mozilla.org/ru/firefox/a … /versions/

Как нормально установить свои скрипты в проклятой новой версии GreaseMonkey?

Почему когда я теперь их открываю они не устанавливаются как раньше?

Minor пишет

Как нормально установить свои скрипты в проклятой новой версии GreaseMonkey?Почему когда я теперь их открываю они не устанавливаются как раньше?

Версия 1.0 Выпущено August 24, 2012 269.3 KB Работает с Firefox 14.0 и выше

Подскажите мне не понимающему, что такого критического изменилось в версии 1.0, что перестал работать следующий скрипт:
оригинал с userscripts.org > ссылка
тот, которым пользуюсь (я его немного подправил под себя) > ссылка1 или ссылка2
Скрипт глючит на некоторых сайтах - например ломает рамблер-почту, на сайте korrespondent.net не работаю кнопки в комментариях, не показывает webui для utorrent и т.д.
Что это может быть???

okkamas_knife пишет

middlemouse.scrollbarPosition ставишь в true и скм по скроллбару в нужном месте

этим пользуюсь, но и с полупрозрачными кнопочками на страничке тоже было неплохо
жаль, что скорее всего придется отказаться от скрипта ...
и главное в чем заковыка? такая фигня появилась только в GM 1.0

Inko7 пишет

этим пользуюсь, но и с полупрозрачными кнопочками на страничке тоже было неплохо
жаль, что скорее всего придется отказаться от скрипта ...
и главное в чем заковыка? такая фигня появилась только в GM 1.0

А консоль что пишет?

Kamui
при заходе на рамблер-почту только одна ошибка (и кучка предупреждений):

Метка времени: 27.08.2012 15:21:14
Ошибка: TypeError: $(t.tmpl._Folder).on is not a function
Источник: http://s.rambler.ru/000070/js/global.min.js
Строка: 1036

и вот такое на экране:
6d2ac7153820t.jpg

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

у меня работает

27-08-2012 16:52:20
на Версия 1.0

27-08-2012 16:56:01
вот работает Top bottom for Firefox

LongLogin пишет

вот работает Top bottom for Firefox

Это ж тот же самый скрипт, только версией поменьше. Но и с ним у меня та же фигня:
add6d771cc4dt.jpg

Inko7
Так может и не скрипт виноват или не он один, а конфликт какой-то?

Kamui
тут уже я не знаю :|
буду смотреть

Есть такая проблема с Google Reader. Фиды используемые только мной (сделаны в Yahoo Pipes и Feed43) редко обновляются автоматически, хотя если нажать кнопку Обновить (#viewer-refresh) появятся новые записи. Можно ли сделать скрипт, который при выборе фида в левой панельке (либо мышкой либо сочетаниями клавиш) будет его обновлять, автоматически нажимая кнопку Обновить? А то надоело каждый раз жмякать кнопочку. Может кто помочь?

humnmind
Кнопка R обновляет текущую ленту, если хотите посмотреть все клавиши, нажмите Shift+/(?) в английской раскладке :)

Kamui
Хрен редьки не слаще :) Теперь вместо лишних кликов лишние нажатия клавиши.

humnmind т.е. у тебя не появляется вверху желтая надпись "загрузко"?

CoolCmd
Надпись появляется. Проблема в другом - ридер редко обновляет фиды с небольшим числом подписчиков (а у меня половина фидов, которые использую только я т.е. 1 подписчик). Пример: в фиде за день появилось 30 новостей и если ридер открыть вечером то будет только 10-15 записей. Остальные в ридере появятся только завтра, если конечно же ни нажать кнопку Обновить, тогда он их подгрузит (что кстати говорит о том что он их до этого уже всосал - пруф (хотя не), но они почему то не появляются в ридере). Гугл кстати это и советует. Проще говоря: интервал автообновления/автопоявления таких фидов в ридере - 2-3 раза день. Поэтому приходится каждый раз жмякать кнопку Обновить у каждого такого фида. И я в этом не одинок: линк1, линк2, линк3.

Нашел вроде пару решений (линк1, линк2), но они из другой области и что с ними делать не знаю (ось - винда).

линк2
bash в виндоус - Поиск в Google

В общем лучше этого ничего не нашел.

Помогите разобраться с написанием скриптов...
По сути имееться объект с событием onclick="ShowAllReleases('x','y','z');return false;" надо из этого вытащить x, y, z и заменить действие на открытие во фрейме странички с адресом url.com/page.php?c=x&s=y&e=z
Как это можно реализовать...

xenus пишет

Помогите разобраться с написанием скриптов...

По всей видимости x,y,z нужно вытаскивать при помощи метода splice() или substring()
А грузить во фрейм просто подставив атрибут src

А как подменить действие кнопки на свое и вообще каким методо осуществить поиск кнопки?

Несколько вопросов:

1) Может ли Greasemonkey скрипт влиять на браузер Firefox аналогично расширению? В каких пределах? Менять интерфейс, настройки и т.п.?

2) Можно ли с помощью greasemonkey скрипта менять настройки браузера, например те, что в about:config?

3) Если about:config можно менять, то можно ли это делать не для всего  браузера, а только для конкретного таба/вебстранцы/домена?

4) Можно ли вообще в Firefox (с помощью полноценного расширения) менять настройки about:config для конкретного таба, а не глобально?

okkamas_knife пишет
Почемучкин пишет

4) Можно ли вообще в Firefox (с помощью полноценного расширения) менять настройки about:config для конкретного таба, а не глобально?

4 да

А при помощи чего (чуть подробнее)?

Почемучкин пишет

А с помощью чего?

может стоит реализовать приватный режим в вкладке (вместо отдельного профиля)

Почемучкин пишет

3) Если about:config можно менять, то можно ли это делать не для всего  браузера, а только для конкретного таба/вебстранцы/домена?

4) Можно ли вообще в Firefox (с помощью полноценного расширения) менять настройки about:config для конкретного таба, а не глобально?

Есть такие расширения. А чего вы так прицепились к about:config? :)

При перезагрузке компа слетели все настройки скриптов GM (хотя сами скрипты работают). Есть бэкап папки с Мозилловским профилем , также некоторое время назад экспортировал профиль со всеми скриптами и настройками на другой комп. Но полностью профиль не хочется ниоткуда восстанавливать, другие последние изменения могут убиться... Как бы настройки только восстановить? Где они физически хранятся?

Atos

Atos пишет

Где они физически хранятся?

тут "%APPDATA%\Mozilla\Firefox\Profiles\xxxxxxxx.default\gm_scripts\config.xml", где xxxxxxxx - уникальная последовательность символов, для каждого своя, default - профиль по умолчянию

Посмотрел, в config.xml нужных настроек нет, видимо скрипты GM сохраняют их в своих переменных, когда позволяет на определённых страницах создавать и запоминать наборы данных. Где ещё посмотреть можно?

Atos
Обычно в about:config хранятся, ищите по слову "greasemonkey", далее через точку идет название скрипта, дальше через точку настройка, т.е.:
greasemonkey.userscript.nastroyka
Это не точное название, т.к. я использую UserScriptLoader, там выглядит так:
UserScriptLoader.scriptival.igcc/Google Currency Converter.from
Выделенное название скрипта.

Kamui пишет

Обычно в about:config хранятся

Kamui, спасибо, нашёл )

потом посмотрел место физического хранения... кроме файла prefs.js   обнаружились ещё файлы prefs-1.js, prefs-2.js, prefs-3.js, prefs-4.js...
вот в последнем из них и обнаружились затёршиеся настройки. скопировал нужный кусок файла, всё встало

Непонятно только, почему Мозилла сама не предлагала возможность восстановления, если уж произошёл сбой :(

Хотя нет, оказывается, не всё встало :(  У одного из скриптов настройки так и не работают, в about:config имена их появились, а значения пустые, хотя в prefs.js и имена и значения заданы. Что за ерунда? :(

Atos пишет

Хотя нет, оказывается, не всё встало :(  У одного из скриптов настройки так и не работают, в about:config имена их появились, а значения пустые, хотя в prefs.js и имена и значения заданы. Что за ерунда? :(

Так вносите настройки не в pref.js, а в about:config.

Ну как бы есть разница, скопировать одним куском, или долго и уныло копипастить несколько десятков строчек, следя, чтобы в нужные переменные значения вставлять...
и хочется разобраться всё-таки, в чём проблема, и почему возникла только с переменными одного из нескольких скриптов

Atos пишет

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

А кто его знает, может в Greasemonkey какой-то идентификатор есть, который поменялся.

Картина маслом: пробую забить парочку значений от балды с помощью скрипта, в about:config они появляются, но в pref.js всё ещё стоят абсолютно другие значения! (Закрытие/открытие браузера ничего не меняет!!)

И самое интересное, что проблема в конце концов решилась заменой файла pref.js на файл, принесённый с другого компа.

Получается, часть значений Мозилла брала из pref.js,  часть ещё откуда-то?? но после замены файла опять все значения стала брать из него, как и полагается...  Вот что это был за глюк, просто интересно уже...

Подскажите пожалуйста. Как на скрыть верхнюю часть с картинкой на lostfilm.tv и заодно на newstudiogroup.tv? Заранее спасибо.

okkamas_knife
Спасибо, но на newstudiogroup.tv не работает данный способ.

Может кто помочь, нужно сделать скрипт, который при заходе на определенную страницу, будет в форме Select выбирать значение, в форму Input вводить значение и потом переключать фокус на Textarea, как это все можно сделать?

Kamui
дай код страницы

CoolCmd пишет

дай код страницы

https://sendsms.megafon.ru/

Код нужного блока

Выделить код

Код:

<form id="sendsms" action="/sms.action" method="post" enctype="multipart/form-data" style="width:510px;">
<input type="hidden" name="charcheck" value="йцукен"  />
<input type="hidden" name="lang"      value=""  />
<select name="prefix" tabindex='1' class="choose-number">
  <option value="7926" name="prefix_f">+7 926</option>
  <option value="7925" name="prefix_f">+7 495(925*)</option>
<option value="7921" name="prefix_f">+7 812(921*)</option>
<option value="7931" name="prefix_f">+7 931</option>
<option value="7920" name="prefix_f">+7 920</option>
<option value="7922" name="prefix_f">+7 922</option>
<option value="7923" name="prefix_f">+7 923</option>
<option value="7924" name="prefix_f">+7 924</option>
<option value="7927" name="prefix_f">+7 927</option>
<option value="7928" name="prefix_f">+7 928</option>
<option value="7937" name="prefix_f">+7 937</option>
<option value="7929" name="prefix_f">+7 929</option>
<option value="7930" name="prefix_f">+7 930</option>
<option value="7932" name="prefix_f">+7 932</option>
<option value="7938" name="prefix_f">+7 938</option>
<option value="7933" name="prefix_f">+7 933</option>
<option value="7939" name="prefix_f">+7 939</option>
</select><input tabindex='2' maxlength="7" size="9" name="addr" type="text" id="addr" pp:pattern="[0-9]{7}" notice="Введите номер телефона абонента" placeholder="Номер телефона абонента" value="" class="telephone-subscriber" />
<p class="symbolcounter"><span id="availablelen">150</span> символов осталось</p>
<textarea tabindex='3' rows="4" cols="29" name="message" id="message" pp:pattern="string" maxlength="150" notice="Введите сообщение (не более 150 символов)" placeholder="Ваше сообщение"></textarea>

Kamui

скрытый текст

Выделить код

Код:

// ==UserScript==
// @id             send-sms-megafuck
// @name           Послать SMS через Мегафон
// @namespace      CoolCmd
// @homepage       https://sendsms.megafon.ru/
// @include        https://sendsms.megafon.ru/*
// @grant          none
// @noframes
// ==/UserScript==

if (window.self == window.top)
{
    document.getElementsByName('prefix')[0].value = '7939';
    document.getElementsByName('addr')[0].value = '1234567';
    document.getElementById('message').focus();
}


можно сделать проще: сохранить страницу на диске и прописать в html нужные значения.

самый интересный вопрос - как отключить капчу, а то вводить лениво. т.е. что слать в recaptcha_challenge_field и recaptcha_response_field?...

CoolCmd
Спасибо, работает :) а если каптчу убрать, так вообще здорово будет ;)

Kamui
я тут немного погуглил. recaptcha не поломана. так что опознавай слова для google сам.

Поддерживается ли пользовательскими скриптами в // @include регулярные выражения?
Например мне нужно чтобы срабатывал на http://4pda.ru/forum/index.php?showtopic=424863
но не срабатывал на http://4pda.ru/forum/index.php?showtopic=424863&view=findpost&p=19060721
т.е. по идее нужно поставить $ в конце, чтобы обозначить конец строки, но сработает ли это?

Kamui
http://wiki.greasespot.net/Include_and_ … xpressions

Плюс всегда можно отфильтровать лишнее уже в самом скрипте.

06-02-2013 19:51:47

Kamui пишет

чтобы срабатывал на http://4pda.ru/forum/index.php?showtopic=424863

Всегда 424863?
Тогда просто без * в конце вписать.

Infocatcher пишет

http://wiki.greasespot.net/Include_and_ … xpressions

Почитал, попробовал в GM, получилось.

Infocatcher пишет

Всегда 424863?

Нет, там не всегда, это номер топика, решил это вот так: [0-9]*$

Infocatcher пишет

Плюс всегда можно отфильтровать лишнее уже в самом скрипте.

Использую UserScriptLoader и похоже он не поддерживает регулярки в include, придется делать так, не подскажешь как реализовать?
Код скрипта простой:

Выделить код

Код:

function findPos(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        do {
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    return [curtop];
    }
}
window.scroll(0,findPos(document.getElementById("topicmenu-options")));

Kamui
Ну так в самом начале добавить что-нибудь вроде

Выделить код

Код:

if(!/^http:\/\/4pda\.ru\/forum\/index\.php\?showtopic=\d+$/.test(location.href))
    return;

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

И не проще

Выделить код

Код:

document.getElementById("topicmenu-options").scrollIntoView();

?

06-02-2013 21:50:16
И есть специально обученный getBoundingClientRect().

Выделить код

Код:

document.getElementById("topicmenu-options").scrollIntoView();

Спасибо, так и сделал :)

Infocatcher пишет

И не проще

Просто код я не сам писал, то что нашел и смог использовать.

Есть такой старенький замечательный скриптик для показа превью картинок при наведении на ссылку:

Выделить код

Код:

// ==UserScript==
// @name           Image previewer
// @author         Awesumness
// @Notes          Enjoy.
// @include        *
// @require        http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==
var url;
var image;
var x;
var y;
var w;
var h;
var hflip;

$(document).ready(function() {
  setTimeout(fixedYet,2000);
});

var fixedYet = function() {
  $("a[href*='.png'],a[href*='.gif'],a[href*='.jpg'],a[href*='.jpeg']")
  .removeAttr("title")
  .hover(imaGen)
  .mousemove(imaGen)
  .mouseout( function() {
    image.css({"display":"none"});
  });
}

function imaGen(e) {
  url = $(this).attr("href");
  image = $("body > img.awesumImgPre[src='" + url + "']");

  if ( image.length < 1 ){
    $("body").append("<img class='awesumImgPre' src='" + url + "'/>");
    image = $("body > img.awesumImgPre[src='" + url + "']");
    image.css({
    "position":"fixed",
    "z-index":"9001",
    "max-width":window.innerWidth/2,
    "max-height":window.innerHeight/2});
  }

  image.css({"display":"block"});

  x = e.pageX + 20 - window.pageXOffset;
  y = e.pageY + 20 - window.pageYOffset;
  flipit();


}




function flipit(){
    w = parseInt(image.css("width"));
    h = parseInt(image.css("height"));
    if(w == 0){
      setTimeout(flipit,100);
    }else{
      hflip = false;

      if(x+w+20 > window.innerWidth){
        x-=w;
        hflip = true;
      }
      if(y+h+20 > window.innerHeight){
        y-=h;
        if(hflip)
          x-=40;
      } 
      image.css({
      "left":x,
      "top":y});
    }
}

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

Возможно кому то покажется мой вопрос смешным, но мне хотелось бы все же узнать ответ.
В [firefox] установлено приложение Greasemonkey. Через это приложение на открывающиеся сайты подключается пользовательские скрипты. Внимание вопрос: Те скрипты которые от компании сайта(оригинальные) загружаться будут? Или сразу же сработает пользовательский? Или быть может сначала загрузиться скрипт сайтовский, а потом уже его перекроет пользовательский? (Прошу извинения за такое объяснение).

gapi
Насколько я понимаю из FAQ Greasemonkey, то скрипты работают параллельно, но пользовательские имеют несколько боле высокий приоритет для выполнения некоторых операций:

Greasemonkey lets you add JavaScript code (called "user scripts") to any web page, which will run when its HTML code has loaded. Compared to writing extensions, user scripts often offer a light-weight alternative, requiring no browser restart on user script installation nor removal, and work with the common DOM API familiar to any web developer (with somewhat elevated privileges for doing cross domain XMLHttpRequest requests and storing small portions of private data). User scripts work more or less like bookmarklets automatically invoked for any URLs matching one or more glob patterns.

Zaycoff Спасибо. Ответ получил.

Возник следующий вопрос: А можно ли как-то заблокировать скрипты "оригинальные", что бы только пользовательские работали? (user.js или userContent.css - это не оно?)

gapi пишет

А можно ли как-то заблокировать скрипты "оригинальные", что бы только пользовательские работали?

NoScript - тотальная блокировка скриптов.

Adblock Plus (в окне нажимаете Ctrl+Shift+V и создаёте правила запрещающие загрузку ненужных скриптов)

Zaycoff пишет
gapi пишет

А можно ли как-то заблокировать скрипты "оригинальные", что бы только пользовательские работали?

NoScript - тотальная блокировка скриптов.

Adblock Plus (в окне нажимаете Ctrl+Shift+V и создаёте правила запрещающие загрузку ненужных скриптов)

Установленны оба этих дополнения. Но ведь NoScript и пользовательские скрипты тогда блокирует?!(Или я ошибаюсь?)

gapi пишет

Но ведь NoScript и пользовательские скрипты тогда блокирует?!(Или я ошибаюсь?)

Не блокирует... :rolleyes:

Есть ли скрипт который подключал плеер на сайте "вконтакте" для воспроизведения видео и музыки в HTML5?
Может кому-то интересно такое соорудить?

gapi пишет

Есть ли скрипт который подключал плеер на сайте "вконтакте" для воспроизведения видео и музыки в HTML5?

vkontakte html5 music

Zaycoff пишет
gapi пишет

Есть ли скрипт который подключал плеер на сайте "вконтакте" для воспроизведения видео и музыки в HTML5?

vkontakte html5 music

что то он не работает у меня. а у Вас?

gapi пишет

что то он не работает у меня. а у Вас?

Без понятия, соцсетями не увлекаюсь :music:

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

http://userscripts.org/topics/96845?page=2 На литебите что-то подкрутили - перестало пахать - кто нить нашел ещё обходные пути?

Нужно блокировать запрос на подтверждение выхода и получение сайтом даты.
http://javascript.about.com/library/blexitblock.htm

https://userscripts.org/scripts/show/164775

Не работает первый. И не слишком ли простой второй? Проверить первый можо зайдя на вики, править статью и не кликая отправить попытаться закрыть вкладку.

geczu пишет

Не работает первый.

в статье ведь написано, что не все используют onbeforeunload. возможно вики использует событие beforeunload. что бы его отключить, нужно перехватить и вызвать stopPropagation.

geczu пишет

И не слишком ли простой второй?

лучше вернуть какуюнить реальную дату, например 01.01.1980.
Only XT users know that January 1, 1980 was a Tuesday. :D

CoolCmd
Не знаете скрипта для предотвращения beforeunload?

А дату лучше вернуть текущую, только подправленную под США или Гринвич. Только вопрос. Если превести есть функции приведения даты к другой форме и не меняется ли она при приведении?

Можно ли реализовать возможность, чтобы при открытии любого видео youtube в ссылку добавлялось no-cache и соответственно загрузка шла по новой ссылке?
Подробнее: Disable caching YouTube videos

Посоны, а давайте вместе бороться с каками в поисковой выдаче поисковиков (янделя и гугеля)?
Когда, например, в Яндекс вводишь запрос в виде вопроса, то в поисковой выдаче очень много результатов, ведущих на фродовые дорвеи (fraud doorway, мошеннический одностраничный сайт), маскирующиеся под форумы. Они существовали и раньше, но сейчас я заметил, что их научились делать по динамичным шаблонам, вы только взгляните на вот эти сайты и увидите сходства и различия:


Отличий у таких сайтов от нормальных - я заметил всего два:
1. У них у всех одинаковая фавиконка
2. Возможно, такие сайты есть не уже и не только в ru-зоне, но мне пока попадались только такие. А вот формат URL:

Выделить код

Код:

%имясайта%.ru/%вопрос%.html

Юзернеймы знающие js, создайте защиту от таких сайтов, пожалуйста.

Список @include правил
// @include     http://www.google.*/search?*
// @include     https://www.google.*/search?*
// @include     http://www.google.*/webhp?*
// @include     https://www.google.*/webhp?*
// @include     http://www.google.*/#*q=*
// @include     https://www.google.*/#*q=*
// @include     http://www.google.*/
// @include     https://www.google.*/
// @include     https://encrypted.google.com/search?*
// @include     https://encrypted.google.com/#*q=*
// @include     http://yandex.*/yandsearch?*
// @include     https://yandex.*/yandsearch?*

1. В поисковой выдаче яндекса отображаются фавиконки сайтов. Можно фильтровать все, с такой фавиконкой: 687474703a2f2f6b616b757374616e6f76697476696c6b752e72752f66617669636f6e2e69636f, но
а. в выдаче гугла нет фавиконок, вариант подходит только для яндекса.
б. иногда в выдаче яндекса фавиконки у некоторых сайтов не отображаются совсем.
в. ради ускорения загрузки и облегчения веса страницы - яндекс собирает все фавиконки в единый файл.
2. Можно делать regex проверку урла сайта, но думаю, что будет много ложных срабатываний.
3. Можно приделать в скрипт возможность отправки куда-то урла сайта, чтобы юзеры скрипта могли рапортовать о новых найденных фрод-дорвеях, а кто-то будет собирать этот список, проверять и пополнять.

У кого-нибудь есть ещё идеи по этому поводу?

03-05-2013 15:45:12
Гм, а в гугле таких сайтов чего-то я пока совсем не вижу: сравните выдачу яндекса и гугеля по этому запросу:

скрытый текст
как удалить слово из словаря Т9 android inurl:kak

Просто гуглом пользоватся. Раз яндекс выдаёт каки.

iDev.Pi пишет

в выдаче гугла нет фавиконок

GoogleMonkeyR for Greasemonkey
4480044m.jpg

Faviconize Google (nested

icons

) for Greasemonkey

Pony_Smile_Pack пишет

Просто гуглом пользоватся. Раз яндекс выдаёт каки.

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

Pony_Smile_Pack пишет

GoogleMonkeyR for Greasemonkey

Я не люблю столь злые скрипты: это же сколько дополнительных запросов он будет генерировать на массу различных сайтов и насколько это замедлит загрузку страницы.
Нет, спасибо.

На всякий случай, пожаловался Яндексу.

iDev.Pi пишет

На всякий случай, пожаловался Яндексу.

Ответа не прислали, но похоже сайты забанили в поисковой выдаче

Помогите довести до ума букмарклет show hidden elemens. Нужно, чтобы не открывалась пустая страница со словом "block"

Выделить код

Код:

javascript:var tags=document.getElementsByTagName("*");for(var tg in tags){try{if(tags[tg].style.display=="none")tags[tg].style.display="block";}catch(e){}}

Это делается оборачиванием кода в анонимную функцию:  javascript: (function () {...})();

Спасибо, Lex1! :blush:

Есть код

Выделить код

Код:

var cont = document.getElementById('id').innerHTML; 
var win = open('','', 'width=400, height=600');
win.document.write(cont);

Как можно сделать, чтобы в созданном окне содержимое cont отображалось в виде кода HTML?

А можно просто в textarea запихнуть ничего не преобразуя. Ещё есть тег pre. Наверно, и другое всякое есть.

Ferguss114 пишет

Как можно сделать, чтобы в созданном окне содержимое cont отображалось в виде кода HTML?

Выделить код

Код:

var p = win.document.createElement('p');
p.textContent = cont;
win.document.body.appendChild(p);

Конечно желательно вариант попроще, когда не надо ничего преобразовывать. Спасибо всем, буду пробовать по всякому, что лучше подойдёт.


Может ещё кто подскажет - как симулировать mouse click в searchbar? Не на кнопке search-go-button, а именно в поле для ввода текста.
Я гуглил, но не нашёл ничего подходящего. Мне надо чтоб только подставить координаты и оно работало.

Фокус это я знаю, но мне надо именно клик. По сути два клика - один выделяет всё, второй сбрасывает выделение, курсор при этом стоит в строке поиска.
Ну допустим, .focus() мне и выделит весь текст, а как потом убрать выделение и оставить курсор в поле?

Это можно запросто сделать в Autohotkey, но я хотел бы делать это мышиным жестом. Как подружить Autohotkey и FireGestures - понятия не имею...

okkamas_knife пишет:

добавь перед фокусом
sb. value = '';
Если бы всё было так просто, я бы сразу это сделал! :)
Мне не надо удалять текст из строки поиска, надо чтобы он был готов для редактирования - выделения нет и на тексте курсор.

Ferguss114

Выделить код

Код:

sb.focus();
sb.setSelectionRange(0, 0);

CoolCmd пишет:

sb.focus();
sb.setSelectionRange(0, 0);

Этот код выделяет всё  в строке поиска и на этом останавливаетя. Выделение не сбрасывается.

Ferguss114 здесь тебе подскажут. greasemonkey не работает в кишках лесы.

Как узнать индекс элемента в массиве (допустим индекс формы в массиве document.forms) по её id или по имени?

rbfyec
array.indexOf()
Только document.forms – не массив.

Выделить код

Код:

Array.indexOf(document.forms, document.getElementById("post")); // Только в Firefox
Array.prototype.indexOf.call(document.forms, document.getElementById("post")); // Все современные браузеры

Спасибо, Infocatcher

Только document.forms – не массив

Конечно имелось в виду document.forms[] :)

А как  то же самое проделать с  элементом, вложенным в форму?

rbfyec пишет

А как  то же самое проделать с  элементом, вложенным в форму?

form -> HTMLFormElement -> HTMLFormElement.elements

Infocatcher пишет

Спасибо, Infocatcher



Я хочу получить список всех потомков некоего элемента. Делаю

Выделить код

Код:

x=content.document.getElementById('id').getElementsByTagName("*");
for (i=0;i<x.length;i++)
{
list = x[i].nodeName;
}

Получаю его, а как это вывести  на экран в читабельном виде? Я пробовал создать окно в теле цикла, но получается - сколько повторений делает цикл, столько и окон открывается.

И ещё вопрос. Если алертом я вывожу список атрибутов, список идёт сплошным текстом, без пробелов. Можно ли как-то придать тексту в алерте более вменяемый вид?

rbfyec
Во-первых, если делать присвоение без объявления переменной через var, будет создана глобальная переменная.
Во-вторых, в Greasemonkey не нужен content, потому как content === window.
Пример для этой страницы:

Выделить код

Код:

var list = [];
var nodes = document.getElementById("post").getElementsByTagName("*");
for(var i = 0, l = nodes.length; i < l; ++i)
    list.push(nodes[i].nodeName);
alert(list.join("\n"));

Альтернативный вариант:

Выделить код

Код:

var nodes = document.getElementById("post").getElementsByTagName("*");
var list = Array.map(nodes, function(node) {
    return node.nodeName;
});
alert(list.join("\n"));

Для поддержки других браузеров надо заменить «Array.map» на «Array.prototype.map.call».

Ну, и вместо alert() можно использовать Веб-консоль и console.log().

Infocatcher пишет

rbfyecВо-первых, если делать присвоение без объявления переменной через var, будет создана глобальная переменная.

Я это знаю.
А что, глобальная переменная - это плохо?

rbfyec пишет

А что, глобальная переменная - это плохо?

В некоторых браузерах (и, если изменится реализация Greasemonkey, то и в Firefox) можно сломать встроенные в страницу скрипты.
Поэтому обычно делают

Выделить код

Код:

(function() {
// Тут какой-то код
})();

Есть сниппет для получения всех атрибутов элемента.

Выделить код

Код:

Array.prototype.slice.call(document.getElementById("myId").attributes).forEach(function(item) {
    console.log(item.name + ': '+ item.value);
});

Я его слегка переделал для ФФ - заменил Array.prototype.slice.call на Array.slice. Хотелось бы выводить полученный список алертом, но чтоб было как в консоли красиво, парами, атрибут - значение.


И вопрос: я открываю консоль (не Firebug, а встроенную) и у меня там надпись " API ведения логов веб-консоли (console.log, console.info, console.warn, console.error) было отключено скриптом на этой странице."
Как  мне его включить?

rbfyec пишет

Хотелось бы выводить полученный список алертом, но чтоб было как в консоли красиво, парами, атрибут - значение.

Выделить код

Код:

var attrs = Array.map(document.getElementById("myId").attributes, function(item) {
    return item.name + ': '+ item.value;
});
alert(attrs.join("\n"));
rbfyec пишет

И вопрос: я открываю консоль (не Firebug, а встроенную) и у меня там надпись " API ведения логов веб-консоли (console.log, console.info, console.warn, console.error) было отключено скриптом на этой странице."
Как  мне его включить?

Если до этого открывался Firebug, то закрыть его и обновить страницу.
Если страница создает свою переменную console, то никак, наверное.

Infocatcher пишет
Выделить код

Код:

var attrs = Array.map(document.getElementById("myId").attributes, function(item) {
    return item.name + ': '+ item.value;
});
alert(attrs.join("\n"))

У меня постоянно даёт ошибку: SyntaxError: missing variable name :|

rbfyec пишет

У меня постоянно даёт ошибку: SyntaxError: missing variable name :|

У меня работает.
В какой строке?

После перезапуска браузера всё заработало.
Infocatcher, спасибо большое!! :)

Интересно есть ли возможность перенести настройки скриптов при создании нового профиля без копирования файла prefs.js? Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.

SuperUser пишет

Интересно есть ли возможность перенести настройки скриптов при создании нового профиля без копирования файла prefs.js? Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.

Перенести папку gm_scripts

voqabuhe пишет
SuperUser пишет

Интересно есть ли возможность перенести настройки скриптов при создании нового профиля без копирования файла prefs.js? Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.

Перенести папку gm_scripts

Пробовали? Перенеслись настройки?

SuperUser пишет

Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.

переносить нужно строки, которые начинаются на

Выделить код

Код:

user_pref("extensions.greasemonkey.scriptvals.

они все одним куском в файле лежат. перенести - дело 30 секунд.

CoolCmd пишет
SuperUser пишет

Естественно о переносе строк по одной из этого файла нет и речи, слишком долго и не всегда всё гладко проходит.

переносить нужно строки, которые начинаются на

Выделить код

Код:

user_pref("extensions.greasemonkey.scriptvals.

они все одним куском в файле лежат. перенести - дело 30 секунд.

Спасибо. Вроде бы заработало. А там посмотрим.

Как нужно использовать результат работы функции?

Выделить код

Код:

function myFunc(a){
    var x=n;
    var y=m;
    ..............
    ..............
    return [x, y];
}

Я могу посмотреть этот результат: alert(myFunc(a))
Но мне надо не увидеть его, а подставить в другой код (в частности window.scrollTo())

toxa
Для Firefox:

Выделить код

Код:

function myFunc() {
    return [0, 1];
}
var [x, y] = myFunc();
alert("x = " + x + "\ny = " + y);

Не только для Firefox:

Выделить код

Код:

function myFunc() {
    return [0, 1];
}
var arr = myFunc();
var x = arr[0];
var y = arr[1];
alert("x = " + x + "\ny = " + y);

А вообще, лучше откуда-нибудь отсюда начать: http://learn.javascript.ru/

Infocatcher пишет

А вообще, лучше откуда-нибудь отсюда начать: http://learn.javascript.ru/

Я там часто бываю. Но к сожалению далеко не всё понятно.

Подскажите ещё как сделать, чтобы выражение типа document.images.myImage вставленное в prompt, можно было подставить вместо obj

Выделить код

Код:

obj.src="чего-то там"
toxa пишет

Подскажите ещё как сделать, чтобы выражение типа document.images.myImage вставленное в prompt, можно было подставить вместо obj

Выделить код

Код:

obj.src="чего-то там"

Зачем такое может понадобиться?
Можно так:

Выделить код

Код:

var str = "document.images.myImage";
var obj = eval(str);
...

Но если это не в тестовых целях, то, скорее всего, что-то не так с логикой скрипта. :)

Infocatcher пишет

...Но если это не в тестовых целях, то, скорее всего, что-то не так с логикой скрипта.

Да, это было нужно именно  в тестовых целях.
Спасибо большое! :)

Решено.

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

Советы, которые мне дали, помогли, но хотелось бы чтоб код выглядел удобочитаемым, "лесенкой". Сейчас всё что удалось добиться - это если я вставляю document.body.innerHTML то выходит "лесенка". А если innerHTML отдельного элемента, код идёт сплошным текстом.

Что можно сделать?

У меня есть скрипт, он выполняет на странице определённое действие. Можно составить условие, чтобы действие НЕ выполнялось, если выскочил alert или confirm или prompt?

Ferguss114
Чтоб код выглядел удобочитаемым, его придётся самостоятельно форматировать. Относительно простая и полноценная реализация может выглядеть так:

скрытый текст

Выделить код

Код:

javascript:(function()
{
  var tab='  ', emptyTags={img:1, br:1, link:1, input:1, hr:1, meta:1}, xml=false, counter=0, showLines=1,
    doc=window.document, loc=window.location, wndFeatures='resizable=yes,scrollbars=yes,location=no', closeTags = '</span></li>';
  
  var openTagNameHead=function(name)
  {
    return '<span class=\'tag\'>&lt;'+name+'';
  };

  var openTagNameFoot=function(xmlemptyTag)
  {
    return (xmlemptyTag?'/':'')+'&gt;</span>';
  };

  var closeTagName=function(name, xmlemptyTag)
  {
    if(xmlemptyTag || emptyTags[name.toLowerCase()]) return '';
    return '<span class=\'tag\'>&lt;/'+name+'&gt;</span>';
  };

  var lineHead=function()
  {
    var lineNumber=counter.toString();
    while(lineNumber.length<3) lineNumber='0'+lineNumber;
    return '<li class=\'line'+(showLines&&((counter++)&1)?' dark\'':'\'')+'><span>';
  };
 
  var escapeHTML=function(str)
  {
    return str.replace(/</g,'&lt;').replace(/>/g,'&gt;');
  };

  var getDoctype=function(doc)
  {
    var doctype=doc.doctype, code='';
    if(doctype)
    {
      code=lineHead()+openTagNameHead('!DOCTYPE')+' <span class=\'attrDoc\'>'+doctype.nodeName+
            (doctype.publicId?' PUBLIC \''+doctype.publicId+'\'':'')+
            (doctype.systemId?'</span></span>'+closeTags+lineHead()+'<span class=\'tag\'><span class=\'attrDoc\'>'+tab+'\''+doctype.systemId+'\'':'')+'</span>'+openTagNameFoot()+closeTags;
    }
    return code;
  };

  var getAttrs=function(ele)
  {
    var attrs=ele.attributes, attr=null, ret='';
    for(var i=0; attr=attrs[i]; i++)
    {
      if(attr.specified && attr.value)
      {
        ret+=' <span class=\'attrTitle\'>'+attr.name+'</span>=<span class=\'attrValue\'>\x22'+escapeHTML(attr.value.replace(/\t/g, tab))+'\x22</span> ';
      }
    }
    return ret;
  };

  var getTextNodeData=function(ele)
  {
    return escapeHTML(ele.nodeValue.replace(/[\n\t\r\u00A0]+ */g,'').replace(/ +/g,' '));
  };

  var getIndent=function(deep)
  {
    var i=0, ret='';
    while(i<deep)
    {
      ret+=tab;
      i++;
    }
    return ret;
  };

  var getLayer=function(ele, deep, singleText)
  {
    var text='', indent=getIndent(deep++);
    switch (ele.nodeType)
    {
      case 1:
      {
        var childs=ele.childNodes, child=null;
        var simple=(childs.length==0)||(childs.length==1 && childs[0].nodeType==3);
        var xmlemptyTag=xml&&childs.length==0;
        var ret=lineHead()+indent+openTagNameHead(ele.nodeName)+getAttrs(ele)+openTagNameFoot(xmlemptyTag);
        if(!simple) ret+=closeTags;
        for(var i=0; child=childs[i]; i++)
        {
          ret+=getLayer(child, deep, !simple&&child.nodeType==3);
        }
        if(simple)
        {
          ret+=(ele.nodeName.toLowerCase()=='textarea'?escapeHTML(ele.value):'')+closeTagName(ele.nodeName, xmlemptyTag)+closeTags;
        }
        else
        {
          ret+=lineHead()+indent+closeTagName(ele.nodeName, xmlemptyTag)+closeTags;
        }
        return ret; 
      }

      case 3:
      {        
        if((text=getTextNodeData(ele)) && singleText) 
        {
          return lineHead()+indent+text+closeTags;
        }
        else
        {
          return text;
        }
      }

      case 4:
      {
        text=getTextNodeData(ele);
        return lineHead()+indent+'<span class=\'cdata\'>&lt;![CDATA[</span>'+text+'<span class=\'cdata\'>]]&gt;</span>'+closeTags;
      }

      case 8:
      {
        text=getTextNodeData(ele);
        return lineHead()+indent+'<span class=\'comment\'>&lt;!--'+text+'--&gt;</span>'+closeTags;
      }

    }

    return ele.nodeType
  };

  var getLiveMarkup=function(selWin)
  {
    var ele, markup='';
    if(selWin)
    {
        var range=selWin.getSelection().getRangeAt(0), pEle=range.commonAncestorContainer;
        if(pEle.nodeType==3 || pEle.nodeType==4)pEle=pEle.parentNode;
        ele=pEle.cloneNode(false);
        ele.appendChild(range.cloneContents());

        var startCon=range.startContainer, endCon=range.endContainer;
        if(startCon != pEle.firstChild || (startCon.nodeType == 3 && range.startOffset != 0))ele.insertBefore(doc.createTextNode('\u2026'), ele.firstChild);
        if(endCon != pEle.lastChild || (endCon.nodeType == 3 && range.endOffset != endCon.nodeValue.length))ele.appendChild(doc.createTextNode('\u2026'));
    }
    else
    {
        markup=getDoctype(doc);
        ele=doc.documentElement;
    };
    markup+=getLayer(ele,0);
    return markup;
  };

  var getSelWin=function(w)
  {
    if(w && w.getSelection){
        if(w.getSelection().toString())return w;
        for(var i = 0, f, r; f = w.frames[i]; i++){
            try{if(r = arguments.callee(f))return r}catch(e){}
        }
    }
  };

    var selWin=getSelWin(window);
    if(selWin){
        doc=selWin.document;
        loc=selWin.location;
        wndFeatures+=',width=800,height=500,left=100,top=100';
    };
    xml=/[a-z]/.test(doc.documentElement.nodeName);
    var markup='<!DOCTYPE html PUBLIC><html><head><title>Snapshot: '+((doc.getElementsByTagName('title').length && escapeHTML(doc.getElementsByTagName('title')[0].text)) || (loc.protocol+'//'+loc.host+loc.pathname))+'</title>'
        +'<style type=\'text/css\'>'
        +'body{padding:0 5px;margin:0;font-family:sans-serif;font-size:.7em;background-color:#FFF;color:#000;}#content{white-space:pre-wrap}ol{color:#999;}span{color:#000}.tag{color:#05F}.attrTitle{color:#E00}.attrValue{color:#C0C}.attrDoc{color:#800080}.comment{color:#008000}.cdata{color:#63D}.line{margin:0;padding:0}.dark{background-color:#FAFAFA}'
        +'</style></head><body>'
        +'<ol id=\'content\'>'+getLiveMarkup(selWin)+'</ol></body></html>';
    var wnd=window.open('about:blank', '_blank', wndFeatures);
    wnd.document.write(markup);
    wnd.document.onkeydown=function(e){if(e.keyCode==27)wnd.close()};
    wnd.document.close();

})()

01-07-2013 13:21:27
Чайник
Если они будут показаны, то скрипт и так остановится. Или нужно определить сам факт их вызова из скрипта на странице? Тогда силами GM, наверное только перезаписывать window.alert и там уже определять.

Lex1 пишет:
Чайник
Если они будут показаны, то скрипт и так остановится.

Я ошибся темой, речь идёт о скрипте не GM, а Firegestures. Но принцип наверное один.
Там в Firegestures если на странице вызван алерт, жест всё равно своё дело делает, а мне это не нужно.
Вот я как раз хочу, чтобы если на экране одно из этих окон (алерт, промпт....), команда не выполнялась.

Ну, вероятно класс, Object.prototype.toString.call(document.commandDispatcher.focusedWindow).slice(8, -1) не должен быть ChromeWindow

Или, что в данном случае кажется похожим - в фокусе должна быть сама страница, а не интерфейс браузера.

Выделить код

Код:

document.commandDispatcher.focusedWindow.top == content
Чайник пишет

Там в Firegestures если на странице вызван алерт, жест всё равно своё дело делает, а мне это не нужно.

У меня вот так сработало, если в начало кода

Выделить код

Код:

if (gBrowser.selectedBrowser.hasAttribute("tabmodalPromptShowing")) return;

Lex1
Подскажите пожалуйста, как поправить скрипт Google Currency Converter.
Он отправляет строку вида http://www.google.com/ig/calculator?hl=ru&q=ЦЕНАвалюта1=валюта2 и получает страницу с содержимым {lhs: "10 U.S. dollars",rhs: "327.954873 Russian rubles",error: "",icc: true} далее он парсит эту строку и извлекает значения.

Я хочу чтобы отправлялась строка вида http://yandex.ru/yandsearch?country=ru&text=ЦЕНА Валюта1 to Валюта2 и парсил значение элемента TR[class="z-converter__row"] и выводил все как и раньше, возможно ли?

Lex1, работают оба варианта: document.commandDispatcher.focusedWindow!='[object ChromeWindow]' и document.commandDispatcher.focusedWindow.top == content (кстати, а почему вы забраковали первый вариант?)

Dumby, этот вариант тоже работает if (gBrowser.selectedBrowser.hasAttribute("tabmodalPromptShowing")) return; :)

Я теперь и думаю: а какой из них оптимальный?

Чайник
Если нужна именно остановка на алертах, то решение Dumby лучше.

кстати, а почему вы забраковали первый вариант

Он был слишком уж похож на первый.

Lex1 и Dumby

Благодарю! ;)

Kamui
Первое заменяется на

Выделить код

Код:

return 'http://yandex.ru/yandsearch?country=ru&text=' + precio + '+' + monedaFrom + '+' + monedaTo;

Второе на

скрытый текст

Выделить код

Код:

var convertir = function (){
        var url = urlConvert();
        GM_xmlhttpRequest({
            method: 'GET',
            url: url,
            onload: function(r) {
                var json = r.responseText;

                var doc = document.implementation.createHTMLDocument("");
                doc.documentElement.innerHTML = json;
                json = doc.querySelectorAll('.z-converter__data > strong');

                $('res-igcc').innerHTML = json[0].textContent + ' = ' + json[1].textContent;
                $('monedaFrom').value = GM_getValue('from');
                $('monedaTo').value = GM_getValue('to');
            }
        });
    }

Lex1
Благодарю :beer: наконец-то все заработало :D

Блин, все-таки офигенский скрипт теперь получился, можно практически под любой сайт переделать :D

Есть код

Выделить код

Код:

javascript:open('http://www.url.php','')

Как тут сделать event listener на загрузку страницы?

Чайник добавить http://www.url.php в @include
или

Выделить код

Код:

open('http://www.url.php','').document.addEventListener('DOMContentLoaded', OnDOMContentLoaded, false);
CoolCmd пишет
Выделить код

Код:

open('http://www.url.php','').document.addEventListener('DOMContentLoaded', OnDOMContentLoaded, false);

Не получается у меня. Я пробую открыть главную страницу форума - запускаю этот код через Scratchpad (просто чтоб попробовать)

Выделить код

Код:

open('http://forum.mozilla-russia.org/index.php','').document.addEventListener('DOMContentLoaded', function(){alert(1)}, false);

Алерт не появляется.

Как можно сделать, чтобы текст в адресной строке выделился и потом выделение пропало и повторить это несколько раз?
Сейчас я делаю так

Выделить код

Код:

gURLBar.select();
setTimeout(function(){gURLBar.blur()}, 400)

Но более одного раза повторить не получается

okkamas_knife пишет

очевидно же

Это для кого как... :blush:

А зачем в первой строчке задержка 10 м/сек?

И попутно ещё спрошу: какая команда может поместить фокус на тело страницы?

возможно ли выключить Greasemonkey без перезагрузки браузера ?

human пишет

возможно ли выключить Greasemonkey без перезагрузки браузера ?

На иконку в Панели дополнений клацни.

voqabuhe,
нужно еще и  страницу перегрузить.;)

Можно ли тут

Выделить код

Код:

element.innerHTML=

указать ссылку на документ?

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

Ну какие же будут подсказки, господа?
Это хоть возможно в принципе?

toxa
Наверное,
http://wiki.greasespot.net/Multi_Line_Strings
=> http://wiki.greasespot.net/GM_getResourceText

Infocatcher пишет

toxa
Наверное
,http://wiki.greasespot.net/Multi_Line_Strings
=> http://wiki.greasespot.net/GM_getResourceText

Спасибо! То что надо!


А подскажите ещё одну вещь.
Вот этот код я запускаю на странице

Выделить код

Код:

var newDiv = document.createElement('div');
newDiv.innerHTML = '<div><input type="submit" value="clear all" style="width:240px; margin:0 2px" onclick=document.forms[0].elements[0].value=""></input><input type="submit" value="select" style="width:240px; margin:0 4px" onclick=document.forms[0].elements[0].select()></input></div>'
window.document.getElementsByTagName('tr')[3].appendChild(newDiv);

Если запускаю его через Scratchpad, всё нормально, в консоли ошибок нет. Но если пробую выполнить этот код через Firegestures или Keyconfig, код не работает, а в консоли

Выделить код

Код:

Ошибка: некорректно
Исходный код:
<div xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"><div><input type="submit" value="clear all" style="width:240px; margin:0 2px" onclick=document.forms[0].elements[0].value=""></input><input type="submit" value="select" style="width:240px; margin:0 4px" onclick=document.forms[0].elements[0].select()></input></div></

В конце виден кусок закрывающего тега, который не знаю откуда взялся.
Что я делаю неправильно?

Upd
В строке состояния Firegestures пишет какую-то ошибку, но я не успеваю прочитать и не знаю как это скопировать. Кстати, а и правда, как получить содержимое того что написано?

toxa пишет

Но если пробую выполнить этот код через Firegestures или Keyconfig, код не работает

Вместо window и document надо использовать content и content.document.

Infocatcher
Спасибо большое! :)

подскажите плиз. есть таблица. содержит разные элементы. есть ячейка с текстом

Выделить код

Код:

<table class="tborder" width="100%" align="center">
<tbody><tr>
    <td class="tcat">
        <div class="smallfont" style="float:right">текст1</div>
        текст2
    </td>
</tr>
...

нужно по тексту в ячейке найти таблицу и скрыть ее с формы. как сделать?

panther26 по тексту долго. если таблица не скачет по форме, то проще найти с помощью css селектора, например с помощью querySelector().

Выделить код

Код:

form.querySelector('.tcat > .smallfont').parentNode.parentNode.parentNode.parentNode

ну а по текесту

Выделить код

Код:

var c = form.getElementsByClassName('smallfont');
for (var i = 0, e; e = c[i]; ++i)
{
    if (e.fistChild.nodeValue == 'текст1')
    {
        return e.parentNode.parentNode.parentNode.parentNode;
    }
}
CoolCmd пишет

panther26 по тексту долго. если таблица не скачет по форме, то проще найти с помощью css селектора, например с помощью querySelector().Выделить кодКод:form.querySelector('.tcat > .smallfont').parentNode.parentNode.parentNode.parentNode

cпасибо за ответ! к сожалению, так не получится, на странице подобных таблиц много очень. уникален только текст в ячейке

CoolCmd пишет

ну а по текестуВыделить кодКод:var c = form.getElementsByClassName('.smallfont');
for (var i = 0, e; e = c[i]; ++i)
{
    if (e.fistChild.nodeValue == 'текст1')
    {
        return e.parentNode.parentNode.parentNode.parentNode;
    }
}

то есть тут надо еще цикл организовать для элементов classname 'smallfont'? к сожалению, в скриптах не сильно разбираюсь

panther26
я тебе показал один из вариантов поиска. все зависит от конкретного содержания страницы.

На хп все нормально с этим скриптом, но вот на win7 он вешает браузер на некоторых страницах, скажите, возможно подправить что-нибудь здесь?

скрытый текст
// ==UserScript==
// @name          Force Wrap
// @namespace     http://zoolcar9.lhukie.net/mozilla/userscripts/
// @include       *
// @exclude       http://mail.google.com/*
// @exclude       */rss/*
// @exclude       *rss*
// @exclude       http://*/rss/*.xml
// @exclude       https://*/rss/*.xml
// @description      Wrap text automatically. Based on Jesse Rudderman's bookmarklet Force Wrap (http://xrl.us/hsn3) and Reset body HTML (http://xrl.us/hsn5).
// ==/UserScript==

function F(n) {
  var u, r, c, x;
  if(n.nodeType == 3) {
    u = n.data.search(/\S{30}/);
    if(u >= 0) {
      r = n.splitText(u + 30);
      n.parentNode.insertBefore(document.createElement('WBR'), r);
    }
  } else if(n.tagName != 'STYLE' && n.tagName != 'SCRIPT' && n.tagName != 'PRE') {
    for (c = 0; x = n.childNodes[c]; ++c) {
      F(x);
    }
  }
}

F(document.body);
//document.body.parentNode.insertBefore(document.body, document.body);

// Coded added to fix regression is Firefox 2.0/3.0 dev builds
// Ripped from MR Tech Link Wrapper 2.0.2
var thisE = document.body;
var p = thisE.parentNode;
var n = thisE.nextSibling;
p.removeChild(thisE);
p.insertBefore(thisE, n);


Спасибо

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

У меня есть скрипт, в котором записано:
// @include       http*://*google.com/*
// @include       http://yandex.ru/*

И вот на Google он работает нормально на всех страницах.
А на Яндексе срабатывает только на первой странице результатов поиска. На всех последующих не работает, но если какую-то последующую страницу обновить, то скрипт на ней срабатывает.

Почему это и что можно сделать?

Чайник
Там динамическая подгрузка через ajax/XMLHttpRequest и страницы как таковые не загружаются. Скрипт вероятно должен это отслеживать (через DOMNodeInserted, например), но по какой-то причине этого не делает.

18-10-2013 18:40:20
Ну и убедитесь, что там не https :)

Lex1 пишет

Скрипт вероятно должен это отслеживать (через DOMNodeInserted, например), но по какой-то причине этого не делает.

Ну и убедитесь, что там не https :)

Скрипт этого не делает, потому что я не написал это в коде :)

Я не знаю как сделать через DOMNodeInserted и тупо сделал

Выделить код

Код:

function myFunction(){// Мой код}
document.body.on*load=myFunction

Или этот вариант нежелателен?

Чайник
А там нет загрузки страницы, не будет и body.on*load. Нужно, например document.addEventListener('DOMNodeInserted', someFnc, false); см. http://userscripts.org/scripts/review/98394

Lex1 пишет

А там нет загрузки страницы, не будет и body.on*load. Нужно, например document.addEventListener('DOMNodeInserted', someFnc, false); см. http://userscripts.org/scripts/review/98394

Спасибо Lex1, так работает! :)

А зачем этот огромный скрипт для удаления редиректов Google?
Почему просто не удалить скриптом атрибут onmousedown у ссылок? Я так делал и вроде ссылки на страницах Google становились прямые, без редиректа.

Lex1 пишет

DOMNodeInserted

только не это. тыц желтенькое

Чайник пишет

Почему просто не удалить скриптом атрибут onmousedown у ссылок?

userscripts.org опять упал... но предположу, что автор нуп. надеюсь, он не станет писать расширения для лисы.  :)

19-10-2013 12:48:16

Выделить код

Код:

// @include       http*://*google.com/*

можно заменить на

Выделить код

Код:

// @include       https://www.google.com/search?*

потому что гугл теперь ищет только в https.

Вот какая мысль возникла. Зная хэш сумму можно скачать раздачу с трекера добавив в utorrent - magnet:?xt=urn:btih:ХЕШ-СУММА. А можно (локально для рутрекера) сделать скрипт который сам преобразовал хэш в магнет?
Оказывается уже есть.

CoolCmd пишет

но предположу, что автор нуп. надеюсь, он не станет писать расширения для лесы.

посмотрел. он не нуб, просто слоупок. так что для расширений лисы серано не годен. :)

Как в просмотре кода выделенного фрагмента реализована подсветка?

Встроенный поиск F3 находит требуемое (в исходнике страницы), только если это plain text, без тегов. А "Исходный код выделенного фрагмента" умеет подсветить и текст, в котором теги были.

Почему этот код

Выделить код

Код:

if (document.location.hostname="my_host"){
function remove() {
links=document.getElementsByTagName('a');
for(var i=0; i<links.length; i++)
links[i].removeAttribute('href')
}

remove()
}

вызывает перезагрузку страницы?

toxa
Может быть потому, что в первой строке кода
используется оператор присваивания [=]
вместо оператора проверки на равенство [==].

Точно! :dumb:

Может кто-нибудь попробует помочь?:rolleyes:

Почему здесь обработчик onclick срабатывает только один раз?

Ferguss114
Потому что hasAttribute() проверяет наличие атрибута (и вызывается, кстати, неправильно).

Я переделал hasAttribute() на getAttribute() и всё заработало.
Ещё пара вопросов: почему если в условии стоит else или else if то всё нормально, а если два независимых условия с  if — то не работает?

так работает

скрытый текст

Выделить код

Код:

<htlm>
  
  <body>
    <div style="background-color:skyblue" id="mydiv1" onclick="changeColor()">DIV1 ---- кликнуть сюда для изменения цвета DIV2----</div>
    <br>
    <div style="background-color:red" id="mydiv2">DIV2</div>
    <script>
      function changeColor() {
        div = document.getElementById('mydiv2');

        if (div.getAttribute('style') == 'background-color:red') {
          div.setAttribute('style', 'background-color:yellow')
        } else {   // <<<<<<<<<<<<<<                                     
          div.setAttribute('style', 'background-color:red')   //  <<<<<<<<<<<<<<   
        }
      }
    </script>
  </body>
</htlm>


а так  нет
скрытый текст

Выделить код

Код:

<htlm>
  
  <body>
    <div style="background-color:skyblue" id="mydiv1" onclick="changeColor()">DIV1 ---- кликнуть сюда для изменения цвета DIV2----</div>
    <br>
    <div style="background-color:red" id="mydiv2">DIV2</div>
    <script>
      function changeColor() {
        div = document.getElementById('mydiv2');

        if (div.getAttribute('style') == 'background-color:red') {
          div.setAttribute('style', 'background-color:yellow')
        }
        if (div.getAttribute('style') != 'background-color:red')  {   // <<<<<<<<<<<<<<   
          div.setAttribute('style', 'background-color:red')    // <<<<<<<<<<<<<<
        }                                                                            
      }
    </script>
  </body>
</htlm>


И последнее: если я хочу передать event  в качестве аргумента, когда нужно писать полностью event, а когда достаточно е?
[firefox] вроде должен понимать е

Ferguss114 пишет

а так  нет

Ну и что должно происходить, когда style='background-color:red' ?
getAttribute() возвращает текущее значение атрибута.

Ferguss114 пишет

И последнее: если я хочу передать event  в качестве аргумента, когда нужно писать полностью event, а когда достаточно е?

Выделить код

Код:

node.onclick = function(anything) {
    ...
};
node.addEventListener("click", function(anything) {
    ...
}, false);
node.setAttribute("onclick", "doSomething(event);");

Ferguss114
Вариант:

Выделить код

Код:

(div.getAttribute('style') == 'background-color:red') 
? div.setAttribute('style', 'background-color:yellow')
: div.setAttribute('style', 'background-color:red');

Infocatcher, bunda1
Спасибо :)

Понравился скрипт Lights out any page for Greasemonkey, но вся его ценность для меня пропадает, из-за того что для его работы требуется разрешить Java Script. В связи с этим вопрос, можно ли как-то подправить данный скрипт, чтобы он работал и при запрещённых Java Script?

После обновления NoScript до v 2.6.8.8rc2 проблема исчезла

+ Enforce docShell-based script blocking for Gecko > 28

Как сделать чтобы результат не был 0?
http://learn.javascript.ru/play/nBA8Sb

hartumov пишет

Как сделать чтобы результат не был 0?

Считывать данные из полей для ввода перед вычислением, а не при загрузке страницы.

Infocatcher пишет

Считывать данные из полей для ввода перед вычислением, а не при загрузке страницы.

То есть присваивать данные из полей в переменные внутри функции getRes?

А если эти данные из полей ввода должны использоваться ещё и в другой функции? Как сделать чтоб она их увидела?
Объявлять x и y без var, чтобы они стали глобальными переменными и тогда будут доступны в любом месте скрипта?

hartumov
Вот так, например: http://learn.javascript.ru/play/oxSYP

Infocatcher
Спасибо! ;)

Как сделать EventListener на загрузку этого окошка, чтобы по окончании загрузки в инпут вставился мой текст?

Выделить код

Код:

w=open('','', 'width=370,height=120');   
w.document.body.innerHTML="<center><p><input type='text size='10'></p></center>"

Ну это я для наглядности взял окошко, где кроме инпута больше ничего нет.
А вот пример из поста Infocatcher http://learn.javascript.ru/play/oxSYP — если  я хочу открыть его со вставленными из буфера числами, как быть? Ведь не реально в data впихнуть код целой страницы.
Или открыть локальный хтмл файл  в виде всплывающего окошка и тоже вставить в поля содержимое буфера, т.е. опять же надо дождаться окончания загрузки страницы.

А EventListener на загрузку всплывающего окна — это очень сложно?

hartumov пишет

если  я хочу открыть его со вставленными из буфера числами, как быть?

Откуда открыть? У обычных страниц бедет доступ только к страницам с того же домена.
А так-то это просто:

Выделить код

Код:

var w=open(location.href, '', 'width=370,height=120');
w.addEventListener("load", function setup() {
    w.removeEventListener("load", setup, false);
    w.document.body.innerHTML="<center><p><input type='text size='10' value='1'></p></center>";
}, false);

03-01-2014 21:19:38
Ну, и блокировщик всплывающих окон придется временно отключить. :)
Или нужно делать кнопку, чтобы окно открывалось после клика.

Infocatcher
Я сохранил страничку с вашим "счётчиком" http://learn.javascript.ru/play/oxSYP
Теперь подставляю в код адрес локального файла

Выделить код

Код:

var w=open('file:///C:/Calc.html', '', 'width=370,height=120');
w.addEventListener("load", function setup() {
    w.removeEventListener("load", setup, false);
w.content.document.getElementsByTagName('input')[0].value='TEST';
}, false);

Текстовые поля я сделал пустыми. Теперь пытаюсь получить первый инпут и вставить в него строку 'TEST'. В идеале я хотел вставлять содержимое буфера, но пока хоть так.
Вот для этого мне и нужен был Listener. Но получить инпут (а хоть и любой элемент) внутри  функции я не могу.
Код я запускал из Keyconfig, если это важно. 

А с таймаутом да, работает, я ещё вчера пробовал. Вне этой функции - open() - можно свободно получить любой элемент. А изнутри - не выходит.
Но тогда этот EventListener не нужен, просто открываю окно, таймер через полторы секунды вставляет текст. Я думал с обработчиком лучше.
Или с обработчиком никак не выйдет?

hartumov пишет

Код я запускал из Keyconfig, если это важно.

Да, важно, там совсем другое окно и совсем другая функция open(), которая возвращает ссылку на окно браузера, внутри которого уже находится окно со страницей (которая еще не загрузилась на момент загрузки окна браузера).

Можно сделать вот так:

Выделить код

Код:

var w = window.openDialog(
    "chrome://browser/content/",
    "_blank",
    "chrome,dialog=no,width=370,height=120",
    "file:///F:/test.html"
);
w.addEventListener("load", function setup(e) {
    w.removeEventListener(e.type, setup, false);
    //w.content.document.getElementsByTagName('input')[0].value='TEST';
    var browser = w.gBrowser.selectedBrowser;
    browser.addEventListener("load", function setupContent(e) {
        browser.removeEventListener("load", setupContent, true);
        //w.content.document.getElementsByTagName('input')[0].value='TEST';
        browser.contentDocument.getElementsByTagName('input')[0].value='TEST';
    }, true);
}, false);

Но зачем это нужно?

04-01-2014 01:11:28

hartumov пишет

В идеале я хотел вставлять содержимое буфера, но пока хоть так.

Казалось бы, что это все делает в теме про Greasemonkey. :)
Greasemonkey, кстати, вроде бы, только GM_setClipboard() умеет.

Но из расширений никаких ограничений нет, а в контексте главного окна браузера вообще доступна готовая функция readFromClipboard() из chrome://browser/content/browser.js.

okkamas_knife пишет

hartumov

в твоём случае можно сделать проще...

Я б не сказал, что этот вариант для меня проще. Я толком и не разобрался что там  к чему :rolleyes:

А вот вариант Infocatcher-а это как раз то что я и хотел. Работает как часы! :rock:

У меня возник еще вопрос по экранированию кавычек. Почему здесь обработчик онклик перестает работать если я экранирую двойные кавычки? http://learn.javascript.ru/play/LeSTEb

Именно здесь это не нужно, здесь используются разные их виды, но я хочу понять в чем причина.

hartumov пишет

У меня возник еще вопрос по экранированию кавычек. Почему здесь обработчик онклик перестает работать если я экранирую двойные кавычки? http://learn.javascript.ru/play/LeSTEb

Именно здесь это не нужно, здесь используются разные их виды, но я хочу понять в чем причина.

В значениях атрибутов экранирование не работает, там можно только &quot; или &#39;/&apos; написать.
А экранировать надо при вот таком использовании:

Выделить код

Код:

document.getElementsByTagName("input")[0]
    .setAttribute(
        "onclick",
        "document.getElementsByTagName(\"textarea\")[0].value=\"test test test\""
    );

У меня вызывается prompt в котором есть дефолтный текст. И вот этот текст изначально выделен, а мне это не удобно.
Можно сделать, чтоб выделения не было или оно само бы сбрасывалось?

Что ж, никаких вариантов?

Ki_rrrilll
Применительно к Greasemonkey можно только сделать свое псевдоокошко с input'ом.

Infocatcher пишет

Применительно к Greasemonkey можно только сделать свое псевдоокошко с input'ом.

А НЕприменительно к Greasemonkey?

Ki_rrrilll пишет

А НЕприменительно к Greasemonkey?

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

Infocatcher пишет

Или отследить открытие стандартного и что-нибудь с ним сделать.

Ну вот это я и имел в виду — отследить открытие стандартного промпта и как-то убрать выделение у текста.
А что можно с ним (стандартным промптом) сделать?

Ki_rrrilll пишет

Ну вот это я и имел в виду — отследить открытие стандартного промпта и как-то убрать выделение у текста.

Только есть тонкость: могут быть сложности и изменением только одного конкретного диалога.
Вот тут есть пример: http://forum.mozilla-russia.org/viewtop … 41#p470941
Только там для отдельных окон, а не для тех, что поверх содержимого вкладок открываются.

Ki_rrrilll пишет

А что можно с ним (стандартным промптом) сделать?

Да что угодно, в принципе.
А выделение можно сбросить через

Выделить код

Код:

textbox.inputField.selectionStart = textbox.value.length;

Весь вопрос только в получении textbox'а из этого диалога.

есть такой скрипт: http://userscripts.org/scripts/review/93679
можно ли как-то добавить размер картинки в килобайтах (байтах)?
заранее спасибо.

Как совместить переменную и regexp?

var val = a;
str.match(здесь мне надо val + /foo/)

toxa
Видимо, https://developer.mozilla.org/en-US/doc … onstructor
Или что там надо совмещать?

Я нашёл на русском, как это делается http://www.cyberforum.ru/javascript-reg … 42589.html но не очень получается...
Мне надо получить подстроку - привожу её как она есть, со всеми кавычками и запятыми. Цифры могут меняться
val,"id":943,"parent":685

Я хочу через match(), составил regexp (не уверен, правильно ли?)

Выделить код

Код:

/,\"id\":\d+,\"parent\":\d+/

теперь надо как-то подставить перед этим выражением мою переменную val чтобы получилось

Выделить код

Код:

str.match(val и /,\"id\":\d+,\"parent\":\d+/)

Я пробовал создать new RegExp, но не получается.

Вроде разобрался :)
Может ещё кто подскажет - как найти нужную строку в локальном json файле?
Кроме как открывать этот файл в Блокноте

Попытался сделать скрипт для установки белого фона на определенном сайте но он не  работает

скрытый текст
// ==UserScript==
// @name mail
// @namespace mail.ru
// @description white
// @include http://my.mail.ru/*
// @version 1
// @grant none
// ==/UserScript==
document.body.style.background = “#ffffff”;

Что не так? Сайт userscripts.org не  открывается.

oleg.sgh для этого не нужен greasemonkey.
фон в мылору задается не в body.

CoolCmd пишет

oleg.sgh для этого не нужен greasemonkey.
фон в мылору задается не в body.

там либо серый фон  либо с цветочками и ягодками
greasemonke уже стоит и хотелось бы поставить им

А где теперь брать скрипты? Сайт userscripts.org - is dead.
У меня допустим уже Youtube Video Ratings не работает.

Pony_Smile_Pack пишет

А где теперь брать скрипты? Сайт userscripts.org - is dead.

Предлагают тут.

А  userscripts.org совсем умер? Пысы посоветуйте пожалуйста скрипт для скачки с файлообменников без капчи и ожидания.

GOT пишет

А  userscripts.org совсем умер?

http://userscripts.org:8080/

для скачивания музыки в VK скрипт бы.

Hastla
http://userscripts.org:8080/scripts/show/134949

villa7
этот скрипт просто открывает аудиофайл

Hastla
Не знаю что у Вас открывает, у меня IDM-ом скачивает.

Hastla пишет

для скачивания музыки в VK

ВКонтакте.ру Downloader 0.3.7.1pre

IDM

Я не знаю даже что это такое.

ВКонтакте.ру Downloader 0.3.7.1pre

Вот такое, только скрипт. Чтобы файл скачивался с именем  "исполнитель - название.mp3"

Hastla
IDM = Internet Download Manager

Hastla пишет

Вот такое, только скрипт

Вот такое, только расширение.

Hastla
Зачем именно скрипит, скачал что нужно, отключил расширение и не мешает, понадобилось снова включил, делов то 5секунд.

Есть рабочий скрипт YouTube Center?

Mishania
https://github.com/YePpHa/YouTubeCenter … er.user.js

aleks_123
Не хочет у меня в 29 работать и всё! Отключаю все дополнения и всё равно не работает. Менял флешплеер даже (стоял 14 бета). Чёрный экран плеера и не открываются настройки. Расширение YouTube Center работает.

Mishania
Не знаю в чем там у тебя проблема. У меня то версия [firefox] 24.5 ESR

aleks_123
На 29 [firefox] тоже всё работает. Правда у меня Скриптиш вместо Обезьяны, может в этом дело.

villa7
aleks_123
Моя вина, стояла бета грейсманки, поставил с АМО и всё заработало. Спасибо за скрипт.

Этот сайт тоже умер, увы:( http://userscripts.org:8080/

GOT пишет

Этот сайт тоже умер, увы:( http://userscripts.org:8080/

вот такие ещё есть
http://userscripts-mirror.org/
https://greasyfork.org/scripts/

Можно ли реализовать возможность, чтобы при открытии любого видео youtube в ссылку добавлялось no-cache и соответственно загрузка шла по новой ссылке?
_____________
пощенски кутии

del

okkamas_knife пишет

выключи их в about:config

и поимей проблемы на фотохостингах.

Xant1k
дай адрес рутрекера, где ссылки на твой сайт для наркоманов.
зачем делать скрипт ради пары переходов?

Xant1k пишет

Связано это с реферером.

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

12-06-2014 22:33:55

Этот сайт тоже умер, увы http://userscripts.org:8080/

вроде нет ещё

Перестал работать GoogleMonkeyR. Поделитесь рабочей версией.

Mishania пишет

Перестал работать GoogleMonkeyR. Поделитесь рабочей версией.

скрытый текст

То, что выложено выше соответствует http://userscripts.org:8080/topics/199305?page=3 Скрипт работает, но пару дней назад, в очередной раз, сломалась подгрузка страниц. Если кто починит будет очень здорово.

Sagen пишет

То, что выложено выше соответствует http://userscripts.org:8080/topics/199305?page=3

если быть точнее, то соответствует этому посту  : http://userscripts.org:8080/topics/212234#posts-613988 и всё работает

Может в ночнушке дело. Ловлю вот такое.

Sagen, может и в ночнушке дело ...   на 30-ке примерно так :

скрытый текст
2014-06-14_020303g.jpg

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

А я как коменты почитал, пару недель месяцев назад, так он у меня и работает.

Сейчас в крайний хром скрипт киданул, все работает :sick: Беда печаль. В хроме, кстати, сохраненные настройки в GooglemonkeyR settings отображаются. В общем скрипт рабочий, но что-то пошло не так.

Astana76, большое спасибо!

Скрипт GoogleMonkeyR не работает с https://www.google.com.ua/ . Может кто-нибудь проверить?

Pippo78 пишет

Скрипт GoogleMonkeyR не работает с https://www.google.com.ua/ . Может кто-нибудь проверить?

Работает

Pony_Smile_Pack большое спасибо все работает если включить безопасный поиск в гугл. Если безопасный поиск отключен , то и  скрипт не работает.

Pippo78 пишет

Pony_Smile_Pack большое спасибо все работает если включить безопасный поиск в гугл. Если безопасный поиск отключен , то и  скрипт не работает.

Ну, у меня отключён.

Релизнули гризманку 2.0 Смотреть осторожно, предварительно прочитав описание.

В Greasemonkey 2.0 некоторые старые скрипты не будут работать из-за двух изменений, сделанных в целях безопасности.

Во-первых, изменилась работа привилегированной песочницы в соответствии с изменениями, сделанными Mozilla в unsafeWindow из Add-on SDK. Теперь, чтобы записывать значения в unsafeWindow, требуется использовать новые методы cloneInto(), exportFunction() и createObjectIn().

Во-вторых, изменилась обработка режима @grant, с помощью которого пользовательские скрипты указывают, к каким методам API им нужен доступ. Если методы не указывались прямо, то раньше Greasemonkey пытался установить их самостоятельно и выбрать подходящий режим @grant. Теперь в таких случаях по умолчанию устанавливается флажок @grant none, то есть нулевой доступ.

В анонсе также сказано, что изменение в работе @grant не затрагивает ранее установленные скрипты, а вступает в силу только после редактирования, обновления или переустановки скрипта, или после установки нового скрипта.

В Greasemonkey 2.0 есть ещё несколько нововведений. Например, включена по умолчанию синхронизация пользовательских скриптов через Firefox Sync. Кроме того, из Greasemonkey удалены все ссылки на каталог пользовательских скриптов Userscripts.org, который уже больше месяца в дауне.

http://webtun.com/browsers/6510-greasem … iptov.html

Здравствуйте!
Помогите реализовать в браузере вывод  id анкеты ВК.

код:

Выделить код

Код:

<div id="gedit_user_requests8483670" class="gedit_user"><div class="gedit_user_bigph_wrap fl_l" onmouseover="GroupsEdit.bigphOver(this, 8483670)"><a class="gedit_bigph" href="/albums8483670" style="margin-top: 100px;"><span class="gedit_bigph_label">Увеличить</span></a><a class="gedit_user_thumb" href="/id8483670"><img class="gedit_user_img" src="http://cs425424.vk.me/v425424670/69b9/HdUFBi2gkHo.jpg"></a></div><div class="gedit_user_info fl_l"><div class="gedit_user_name"><a class="gedit_user_lnk" href="/id8483670">Александр Шевернёв</a></div><div class="gedit_user_btns"><div class="gedit_user_buttons"><div class="button_blue fl_l"><button onclick="GroupsEdit.uAction(this, 8483670, 'd6c84f2b3f7cbd34ee', 1)">Принять в группу</button></div><div class="button_cancel gedit_user_cancel_button fl_l"><div class="button" onclick="GroupsEdit.uAction(this, 8483670, 'd6c84f2b3f7cbd34ee', -1)">Отклонить заявку</div></div></div></div></div><div class="gedit_user_actions fl_r"></div></div>

8483670 (id анкеты) необходимо вывести после имени и фамилии, как на картинке:
2fb20ac9e804.jpg

freakos

Выделить код

Код:

var a = document.getElementsByClassName('gedit_user_lnk');
for (var i = 0, b; b = a[i]; ++i)
{
    var c = document.createElement('span');
    c.style.marginLeft = '1em';
    c.textContent = b.getAttrubute('href').substr(3);
    b.parentNode.appendChild(c);
}

не проверял

Проблема с post-запросом. Обращаюсь к пхп-файлу таким образом:

Выделить код

Код:

$("input[value='OK']").click(function(){
    console.log('test');
    var gmxml = GM_xmlhttpRequest({
        method : "POST",
        url : "http://myserv.w.pw/save_post.php",
        data: "mes=qwer123&thrd=555",
        onload : function() {
            console.log('success');
        },
        onerror:function() {
            console.log('FAIL ');
        }
      });
});

Запрос успешно проходит. Однако в пхп-файле $_POST['mes'] и $_POST['thrd'] пустые, print_r тоже пустые массивы даёт. ЧЯДНТ?

null28
А если как в примере добавить

Выделить код

Код:

headers: {
    "Content-Type": "application/x-www-form-urlencoded"
  },

?

и правда, теперь работает...

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

Возможно ли с помощью GM, ну или любыми другими средствами браузера/расширений, подменять загружаемый скрипт с определенной страницы? Например, грузится с сайта скрипт "grid_core_item.js". Могу ли я его заменить локальным скриптом, либо со своего домена? Спасибо.

PS. Временно решил вопрос с помощью Fiddler'a. Но хочется организовать это без дополнительных программ.

Zloy_Gelud т.е. скрипт находится не в html, а в отдельном файле?

CoolCmd пишет

Zloy_Gelud т.е. скрипт находится не в html, а в отдельном файле?

Да. Скажу больше - он подтягивается с помощью XHR.

Zloy_Gelud
ты скрыл от нас самое главное. :) попробуй https://developer.mozilla.org/en-US/doc … onObserver.

CoolCmd пишет

Zloy_Gelud
ты скрыл от нас самое главное. :) попробуй https://developer.mozilla.org/en-US/doc … onObserver.

Я был бы тебе очень признателен, если бы ты накидал небольшой пример для моего случая. :)

Zloy_Gelud
я глянул в инет... отменить выполнение внешнего файла в лесе нельзя. так что остается 3 способа:
1.запретить загрузку в adblock-е
2.программно блокировать результаты работы скрипта. зависит от его содержимого, иногда это просто, а иногда невозможно.
3.вместо gm скрипта написать расширение ff.

CoolCmd

CoolCmd пишет

отменить выполнение внешнего файла в лесе нельзя.

Я с помощью beforescriptexecute блокировал.

CoolCmd пишет

вместо gm скрипта написать расширение ff

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

Zloy_Gelud пишет

Я с помощью beforescriptexecute блокировал.

это только для inline скриптов.

Zloy_Gelud пишет

А что это даст?

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

CoolCmd пишет

это только для inline скриптов.

Я не знаю для чего он предназначен, но динамически подгружаемые скрипты им тоже можно отсекать.

Zloy_Gelud
ну так отсекай. лови в body это сообщение. preventDefault(). потом вставляй свой тег. может будет достаточно src изменить хз.

del

В общем дело обстоит так. Работа предстоит с Firefox.
Есть страница https://by.e-konsulat.gov.pl/Uslugi/RejestracjaTerminu.aspx?IDUSLUGI=8&IDPlacowki=93
Внизу страницы есть капча, но периодически, при большой нагрузке на сайт, ддосе и тд, страница загружается не полностью и капча не отображается.
Что делаем, когда загружается полупустая страница :
- Кликаем по центральной части страницы правой кнопкой и выбираем Inspect element;
- Ищем блок table#cp_tabFormularz.biale_tlo и справа снимаем флажок у visibility: hidden.
После этого капча появляется.
Но это все очень долго. Решил попробовать поставить Greasemonkey на Firefox и сделать скрипт, который загружал бы страницу с уже исправленной строкой, те вместо <table id="cp_tabFormularz" width="650" class="biale_tlo" style="visibility: hidden"> загружал бы <table id="cp_tabFormularz" width="650" class="biale_tlo" style=""> ну или что-то вроде того.
Это вообще реально сделать или у меня дурные мысли на ночь глядя поперли?
Просто это же можно как-то сделать, но вот с какой стороны подойти и как реализовать не могу придумать.
Помогите, если у кого есть мысли, может это все можно сделать намного проще и быстрее, а я лезу в дебри. Заранее спасибо.

kobrin13
проблема решается стилем.
#cp_tabFormularz{visibility:visible!important;}

iDev.Pi
я очень извиняюсь, тк далек от скриптов, а какой вид скрипт должен иметь?
// ==UserScript==
// @name        Виза
// @namespace   Виза
// @description Виза
// @include     https://by.e-konsulat.gov.pl/Uslugi/RejestracjaTerminu.aspx?IDUSLUGI=8&IDPlacowki=93
// @version     1
// @grant       none
// ==/UserScript==
#cp_tabFormularz{visibility:visible!important;}
типа этого или как?

Может так:

Выделить код

Код:

// ==UserScript==
// @name        Виза
// @namespace   Виза
// @description Виза
// @include     https://by.e-konsulat.gov.pl/Uslugi/RejestracjaTerminu.aspx?IDUSLUGI=8&IDPlacowki=93
// @version     1
// @grant       none
// @run-at         document-end
// ==/UserScript==
document.getElementById('cp_tabFormularz').style.visibility = 'visible !important';

Zloy_Gelud
не работает, к сожалению(

kobrin13 пишет

Zloy_Gelud
не работает, к сожалению(

А стиль поменялся после загрузки страницы или нет?
Можешь попробовать как ты говорил:
document.getElementById('cp_tabFormularz').style.visibility = 'hidden !important';

Zloy_Gelud
никак не помогает... стиль не меняется, проверяю ручками, галочка на месте(

kobrin13 пишет

Zloy_Gelud
никак не помогает... стиль не меняется, проверяю ручками, галочка на месте(

Ну тогда мне кажется необходимо лично смотреть на страницу. Но на нее не пускает.

Zloy_Gelud
а обойтись без скриптов - не вариант?

iDev.Pi пишет

Zloy_Gelud
а обойтись без скриптов - не вариант?

А я откуда знаю. :) Я ж не спец. Если знаете как - посоветуйте человеку.

UPD. Вы про Stylish говорили?

Выделить код

Код:

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document url("https://by.e-konsulat.gov.pl/Uslugi/RejestracjaTerminu.aspx?IDUSLUGI=8&IDPlacowki=93") {
    #cp_tabFormularz{visibility:visible!important;}
    /*#cp_tabFormularz{visibility:hidden!important;}*/
}

Zloy_Gelud
Браузер Firefox поддерживает установку пользовательских стилей. Код стиля - я привёл выше. Один из вариантов использования стилей в Firefox - это Stylish.
Всю эту информацию вы могли бы и сами собрать, воспользовавшись поиском.

iDev.Pi
и это не помогло(

11-08-2014 16:10:01
cb9c44b928bb.jpg вот как-то так

помогло вот так

Выделить код

Код:

document.getElementById('cp_tabFormularz').style.visibility = "";

но работает только через F12 - консоль
а в greasemonkey или stylish отказывается

kobrin13
Через Stylish можно попробовать:

Выделить код

Код:

#cp_tabFormularz {all: unset !important;}

Kamui
тоже мимо)

del

Xant1k
иногда? вспышка на солнце. бум! нет favicon. :(
конкретно какой адрес не отображается. с чего ты взял, что это не проблемы яндекса? ctrl+shift+q (в фф31) и смотри почему не грузится.

GoogleMonkeyR опять побился, криво отражает результаты. Есть ли решение?

Пробуйте https://greasyfork.org/forum/discussion/1293/x

Sagen пишет

Да, я читаю это. Там зазор остаётся у меня. Между результатами и поисковой строкой.
Напишу им туда конечно.

Да, работает. То что на pastebin он там выложил.

Разъясните такую ситуацию:
Есть такой сайт - www.yaplakal.com
Грузится страница у меня очень долго (смотрю в адресной строке по индикатору от status-4-evar) и пока не загрузится целиком, перемещаться по ней практически невозможно.
В итоге выяснил, что виноват грисманки. Пробовал внести сайт в глобальные исключения всего грисманки - не помогло. Прописывал эксклуды в активных скриптах - тоже не помогло, такие же тормоза при загрузке страницы.
В итоге, решил временно сделать обезьяну не активной и чудо, страница стала грузится в РАЗЫ быстрее. Всё было бы замечательно, но мне нужно, чтобы один скрипт оставался активным.
Можно ли чего-нить с этим поделать?

Inko7
Ничего такого у себя не наблюдаю, грузится сайт быстро, стробер не крутится... Может не Greasemonkey виноват, а какой-то конкретный скрипт? Проверь, если это так, то виновника и вноси в исключения.

voqabuhe
вносил вот такое исключение *yaplakal* во все скрипты, которые активны на данной странице - не помогало...
не могут ли влиять отключенные скрипты? может и в них нужно прописать исключение?

Inko7 пишет

не могут ли влиять отключенные скрипты?

нет
значит неправильно отключил

Inko7 пишет

вносил вот такое исключение *yaplakal* во все скрипты, которые активны на данной странице - не помогало...

А если просто отключить все скрипты которые работают с yaplakal? Если поможет, то тогда методом исключения выявить виновника.

voqabuhe пишет

А если просто отключить все скрипты которые работают с yaplakal

отключал все у которых в инклудах было разрешение для всех сайтов - те же тормоза...
вроде и комп не слабый и инет быстрый, но тупит именно на этом сайте
уточню: содержимое сайта вроде и быстро подгружается, но скролл не пашет или дергает страницу и замирает, троббер на вкладке тоже тупит. И все это пока не догрузится страница целиком, затем все сразу ок.

Inko7
Можно тогда ещё попробовать на Scriptish перейти и/или [firefox] обновить.

05-09-2014 14:53:10
ЗЫ И предыдущие версии Greasemonkey попробовать.

voqabuhe
ок, буду разбираться...
в качестве временной меры, с помощью CB принудительно отключаю GM для yaplakal, а для остальных обратно включаю ;)

Inko7
Попробовал yaplakal добавить в белый список NoScript, так на моём старье к [firefox] пришёл просто какойто пипец. :) Как я понимаю, ты NoScript не пользуешься? Там же куча флэша подгружается и прочего добра, вот всё и тормозит.

voqabuhe
нет, NoScript не пользуюсь
был без надобности как-то

Greasemonkey 2.2 создаёт файлы базы данных теперь, это нормально?
А то Mouseover_Popup_Image_Viewer.db-wal и YouTube_Link_Title.db-wal по 32 МБ уже каждый
--------
они временные, как я понял, эти .db-wal
но, что-то они не отлипают на этих скриптах

странно просто, 64 МБ целых
---------
и у них один автор
пожалуй надо маякнуть ему об таком деле

Pony_Smile_Pack
Это только скрипты имеющие разрешения:
// @grant       GM_getValue создает *.db
// @grant       GM_setValue создает .db-shm и .db-wal
Прим: http://onedev.net/post/357

ЗЫ: Обычно не пользуюсь такими, если бы не вы, так бы и не узнал про этот "мусор" ещё долгое время. Пожалуй добавлю ещё себе и в CCleaner:

скрытый текст
[Greasemonkey (Базы Данных Скриптов)]
Section=Расширения: Firefox
Default=False
FileKey1=%AppData%\Mozilla\Firefox\Profiles\*\gm_scripts\|*.db
FileKey2=%AppData%\Mozilla\Firefox\Profiles\*\gm_scripts\|*.db-shm
FileKey3=%AppData%\Mozilla\Firefox\Profiles\*\gm_scripts\|*.db-wal

здравствуйте, мне нужен совет, может кто поможет :)

я хочу вернуть странице поста livejournal (той которая дефолтная для S1 стиля и которую можно увидеть в любом стиле по format=light) её старый вид. поясню что я имею в виду.

сейчас страница выглядит так

57c82dbf9aa3dfb483ffdd63a089b7643d8277ae.png

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

а раньше страница выглядела так

9eb0a0cc702e62b8bf078c9186c964811b10cd5a.png

как видно, в этом варианте строка занимает всю или почти всю ширину страницы.

сейчас я эту ширину меняю с помощью вот этого костыля - выставив там ширину в 115em. но при изменении размера окна появляется горизонтальная прокрутка, а при выставлении значения 100% ширина просто сбрасывается на дефолтную (узкую).

для меня css и javascript это китайская грамота, но может кто из знающих подскажет, как сделать так чтобы текст растягивался на всю ширину окна, какого бы размера ни было окно?

спокойный

Выделить код

Код:

.b-singlepost-wrapper {max-width: none !important}

я думаю, можно в userContent.css запихнуть и обойтись без скрипта.

CoolCmd пишет

спокойныйВыделить кодКод:.b-singlepost-wrapper {max-width: none !important}я думаю, можно в userContent.css запихнуть и обойтись без скрипта.

а куда этот файл положить (или где его найти)?

в папку профиля которая в %userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\

или в c:\Program Files (x86)\mozilla firefox\

потому что ни там ни там такого файла я не нашёл.

okkamas_knife, CoolCmd
фантастика. спасибо, теперь всё отображается как надо.

подскажите пожалуйста какой скрипт нужен для возможности сохранения фото с 500px

Подскажите, как вкл/откл Панель меню? Пробовал так

Выделить код

Код:

var bar = document.getElementById("main-menubar");
setToolbarVisibility(bar, bar.collapsed);
Выделить код

Код:

var bar = document.getElementById("menubar-items"); 
setToolbarVisibility(bar, bar.collapsed);

но отключается только  Главное меню, а сама панель вместе с расположенными на ней кнопками остаётся.
А если так

Выделить код

Код:

var bar = document.getElementById("toolbar-menubar");
setToolbarVisibility(bar, bar.collapsed);

то только отключает панель, но не включает.

del

Xant1k
попробуй заменить

Выделить код

Код:

var hash = e.innerText;

на

Выделить код

Код:

var hash = e.textContent;

PS посмотрел историю изменений. поржал. :)

Совершенно не работают в [firefox] 33 TvFedor RuTracker и Torrents Re-Downloader. Может есть возможность починить хотя-бы один из них.

del

Mishania, оба работают.

vitalii201
Хм, надо искать что не так, а то у человека постом выше тоже не работают.

Mishania, кстати - спасибо, я себе "Фёдора" оставил.

vitalii201
Попробовал на чистом профиле, из дополнений только Greasemonkey, не работает. попробовал 2.3beta - тоже не запустились. Можно поподробней, как оно у вас работает?

Mishania,

скрытый текст
R0mJ3rR.png

vitalii201
Интересное кино, вдруг заработал Фёдор! Совсем ничего не понимаю. Но лучше не трогать.

Есть скрипт который конвертирует валюту и другие величины, выводит он данные в таблице с определенным стилем, но на разных сайтах эта таблица выглядит по-разному и иногда ее сильно корёжит. Можно ли как-то изменить код, чтобы например выводилась не таблица а div элемент с уникальным id?

Выделить код

Код:

// ==UserScript==
// @name           Universal converter
// @namespace      igcc
// @include        *
// @description    Конвертация различных величин
// @grant          GM_getValue
// @grant          GM_setValue
// @grant          GM_xmlhttpRequest
// ==/UserScript==
(function (){
    var log = function() {
        if (unsafeWindow.console) unsafeWindow.console.log.apply(unsafeWindow.console, arguments);
    };

    var tabla='';
    var pos = [0,0];

    var setPos = function (d){
        d.style.top = pos[0] - 25 + 'px';
        d.style.left = pos[1] - 170 + 'px';
    }

    var showMe = function (d) {
        if(d.length < 1) {
            return;
        }
        setPos(d);
        d.style.display = "block";
    }

    var hideMe = function (d) {
        if(d.length < 1) {
            return;
        }
        d.style.display = "none";
    };

    var currencys = {
        'USD':'Доллар США',
        'RUB':'Российский рубль',
        'CNY':'Китайский юань',
        'EUR':'Евро',
        'UAH':'Украинская гривна',
        'GBP':'Британский фунт',
        'JPY':'Японская йена',
        'AUD':'Австралийский доллар',
        'CAD':'Канадский доллар',
        'HKD':'Гонконгский доллар',
        '':'',
        'cm':'Сантиметр',
        'inch':'Дюйм'
    }
    var urlConvert = function (){
        var price = $('price-igcc').value;
        var currencyFrom = $('currencyFrom').value;
        var currencyTo = $('currencyTo').value;
        GM_setValue('from',currencyFrom);
        GM_setValue('to',currencyTo);
        return 'https://www.google.ru/search?&q=' + price + '+' + currencyFrom + '+in+' + currencyTo
    };

    var $ = function(id) {
        return document.getElementById(id);
    };

    var showMenu = function (){
        showMe($('tabla-igcc'));
        convertir();
    };
    var setTabla = function (){
        var filas = []
        for(var currency in currencys){
            filas.push('<option value="' + currency + '">' + currencys[currency] + '</option>');
        }

        tabla += '<input type="hidden" id="price-igcc" value="0">';
        tabla += '<table border="0" style="line-height:normal;color:yellow;font-weight:bold;text-align:center;">';
        tabla += '    <tr>';
        tabla += '        <td colspan="3"><p id="res-igcc" style="color:yellow;"></p></td>';
        tabla += '    </tr>';
        tabla += '    <tr>';
        tabla += '        <td style="border:0px;padding:0px;color:white;"><b><label for="currencyFrom">Из:</label></b></td>';
        tabla += '        <td style="border:0px;padding:0px;color:#fff;"><select id="currencyFrom">' + filas.join('') + '</select></td>';
        tabla += '        <td style="border:0px;padding:0px;color:#fff;" rowspan="2">';
        tabla += '            <img id="swc-curr-igcc" alt="switch" src="data:image/gif;base64,R0lGODlhEgASAKUfACkyVuLk5ZOi5WiEx0li1AAAzD1Y0fr8+LzC4YCYz8bL4u7t8LS71Gd81n+Q2s/W8/H1+LXA7ubn8Orv+VNr1neK3d7h8cDK8YmY3NbZ3vj4+NPX5lVy1uvv+c7T3v///56s6G2C3ZGf27zE6vL1/Obq+drg9kJazuDj8YSU33qM3////////////////////////////////////////////////////////////////////////////////////yH5BAEHAD8ALAAAAAASABIAAAZswN9vQCwajcLhZ8lsNgdKp/Q5aD5AIYNpSmymDGBBSdr1GgjgFIkqTV1KKgNlvCxPPxFDiGm/Cwx8VXdLf4GDB3l7dYJeIxYVchaGTQ5nYA4SbEyVYBgbZIwfCCINBgpcoYN8Uap1SUewRUJBADs=" />';
        tabla += '        </td>';
        tabla += '    </tr>';

        tabla += '    <tr>';
        tabla += '        <td style="border:0px;padding:0px;color:white;"><b><label for="currencyTo">В:</label></b></td>';
        tabla += '        <td style="border:0px;padding:0px;color:#fff;"><select id="currencyTo">' + filas.join('') + '</select></td>';
        tabla += '    </tr>';

        tabla += '    <tr>';
        tabla += '        <td style="border:0px;padding:0px;color:#fff;" colspan="3"><center><button id="ver-res-igcc">Посчитать</button></center></td>';
        tabla += '    </tr>';

        tabla += '</table>';
        var divTabla = document.createElement('div');
        divTabla.id = "tabla-igcc";
        divTabla.style.position = "absolute";
        divTabla.style.display = "none";
        divTabla.style.background = "#333";
        divTabla.style.border = "0px";
        divTabla.style.padding = "5px";
        divTabla.innerHTML = tabla;

        try {
            document.body.appendChild(divTabla);
        } catch(e){
        }
    };
    var convertir = function (){
        var url = urlConvert();
        GM_xmlhttpRequest({
            method: 'GET',
            url: url,
            onload: function(r) {
                var json = r.responseText;

                var doc = document.implementation.createHTMLDocument("");
                doc.documentElement.innerHTML = json;
                json = doc.querySelectorAll('.ct-cs > div');

                $('res-igcc').innerHTML = json[0].textContent + json[1].textContent;
                $('currencyFrom').value = GM_getValue('from');
                $('currencyTo').value = GM_getValue('to');
            }
        });
    }

    function init(){
        try {
            if(window != window.top){
                return;
            }

            setTabla();
            $('currencyFrom').value = GM_getValue('from');
            $('currencyTo').value = GM_getValue('to');

            $('ver-res-igcc').addEventListener('mousedown',function (e){
                if (e.stopPropagation){
                    e.stopPropagation();
                }
                e.cancelBubble = true;
                convertir();
            },true);
            $('swc-curr-igcc').addEventListener('mousedown',function (e){
                var currencyFrom = $('currencyFrom').value;
                var currencyTo = $('currencyTo').value;
                GM_setValue('from',currencyTo);
                GM_setValue('to',currencyFrom);
                $('currencyFrom').value = GM_getValue('from');
                $('currencyTo').value = GM_getValue('to');
                convertir();
            },true);
            window.addEventListener("mousemove",
                function(e){
                    e = e || window.event;
                    pos = [e.pageY,e.pageX]
                },false);
            window.addEventListener("mousedown",
                function(e){
                    e = e || window.event;
                    var reltg = e.target
                    while (reltg.id != 'tabla-igcc' && reltg.nodeName != 'HTML' && reltg.nodeName != 'BODY'){
                        reltg= reltg.parentNode
                    }
                    if(reltg.id !== 'tabla-igcc'){
                        hideMe($('tabla-igcc'));
                    }
                },true);
            window.addEventListener("click",function (e){
                e = e || window.event;
                    if ( e.altKey && e.button == 0 &&  e.detail == 2 ) {
                    var price = parseFloat(window.getSelection().toString().replace(/[^0-9\.\,]+/,'').replace(/[\,]+/,'.'));
                    if(!isNaN(price)){
                        $('price-igcc').value = price
                        showMenu()
                    }
                }
            },false);
            window.addEventListener("contextmenu",function(e) {
                e = e || window.event;
                if(e.shiftKey) {
                    var price = parseFloat(window.getSelection().toString().replace(/[^0-9\.\,]+/,'').replace(/[\,]+/,'.'));
                    if(!isNaN(price)){
                        $('price-igcc').value = price
                        showMenu()
                    }
                    e.preventDefault();
                    e.returnValue = false;
                    e.stopPropagation();
                    return false;
                }
            },false);
        } catch(e){
        }
    }
    init();
})()

del

На некоторых сайтах, если окно неактивно останавливается таймер. Можно это изменить, или принципиально невозможно?

okkamas_knife, я немного другое хотел. Что-то вроде подмены фокуса. Т.е. вкладка, которая неактивна, считалась в фокусе (активной).

manuk это уже наверняка сделали. чеши на greasyfork.org и ищи свой обменник.

manuk пишет

я немного другое хотел. Что-то вроде подмены фокуса. Т.е. вкладка, которая неактивна, считалась в фокусе (активной).

Вряд ли такое возможно. Там даже над активной вкладкой папку нельзя открыть.

Там даже над активной вкладкой папку нельзя открыть.

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

Вряд ли такое возможно.

Жаль.

Доброго времени суток!
У меня такая проблема, я хочу что бы при загрузке страницы Greasemonkey менял код страницы, поискал в интернете и нацарапал код, но он не работает.:angry: Помогите пожалуйста)
Нужно изменить var count=5 на var count=0
Вот собственно код с Greasemonkey

Выделить код

Код:

// ==UserScript==
// @name        Replace 5 to 0
// @grant       GM_getValue
// @grant       GM_setValue
// @namespace   1
// @description 1
// @version     1
// ==/UserScript==
GM_setValue(`count`,0)
console.log (`count= `+GM_getValue(`count`));

Код страницы

Выделить код

Код:

<script>
document.onkeydown = function (e) { if(e.which == 27){ return false; } } /*ESC KEY DISABLED*/
        
        var controle=0;
        
        setTimeout(function(){callTimer();}, 5000); /*Start in 5 seconds if frame not load*/
        
        function callTimer(){
            if(controle==0){
            loadTimer();
            controle=1;
            }
        }
        
        function loadTimer(){ /*START TIMER*/
        
        var count=5;
        var size_div=120/count;
        var running_bar=size_div;
        
        document.getElementById("m_wait").style.display="none";
        document.getElementById("m_counter").style.display="";        
        
        var counter=setInterval(timer, 1000);
        
            function timer()
            {
        
                if (document.hasFocus){ /*browser support function hasFocus*/    
                    if (document.hasFocus ()) { /*Protection Focus*/
                    document.getElementById("focus-msg").style.display='none';
                    count=count-1;
                    document.getElementById("m_timer").style.width=running_bar+"px";
                    running_bar = running_bar + size_div;
                    }else{
                    //document.getElementById("focus-msg").style.display='';
                    count=count;
                    }    
                }else{ /*browser not support function hasFocus, so liberate*/
                count=count-1;
                document.getElementById("m_timer").style.width=running_bar+"px";
                running_bar = running_bar + size_div;
                }
                
                                
             if (count <= 0)
                {                                                        
                clearInterval(counter);
                document.getElementById("m_timer").style.width="120px";
                document.getElementById("m_counter").style.display="none";
                var iframe = document.createElement('iframe');
                iframe.setAttribute("src", "/view-check.php?hashurl=MzM4&s=a773f5646e0c316b4200");
                iframe.frameBorder=0;
                iframe.scrolling="no";
                iframe.width="500px";
                iframe.height="50px";
                document.getElementById("m_iframe").appendChild(iframe);
                return;
                }
            
            }
        
        }
                    
    </script>

Всем доброго времени!
С недавнего времени изменился интерфейс яндекса. Яндекс стал более навязчивым. Особенно раздражает своей навязчивостью сервис "яндекс картинки"
С правой стороны крупным планом (почти на пол страницы) всегда висит изображение картинки которая отвлекает внимание при поиске. Эту картинку невозможно ни закрыть ни свернуть.
Можно ли решить эту проблему при помощи Greasemonkey и повторить интерфейс из гуглкартинок?? Чтобы с правой стороны экрана не было бы большой случайной картинки. Чтобы открывалась на пол страницы только при нажатии на ее миниатюру?


8ad26382d8cd97b5a028d664098eb41a.jpeg

Может кто-нибудь поправит этот скрипт:

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        URL Shortener Unshortener
// @namespace   Smiths
// @description    Adds small button next to shortened URLs (t.co/bit.ly/goo.gl) on Twitter and other sites that will replace the shortened URLs with their real locations and vice-versa. Useful for when you don't want to blindly click links.
// @include     *
// @version     1.0.5
// @grant           GM_getValue
// @grant          GM_setValue
// @grant           GM_addStyle
// @grant             GM_xmlhttpRequest
// @grant             GM_registerMenuCommand
// @attribution    changes [d:03.05.14][u:<ul><li>Fix for oversized buttons; needed to specify size. Oops./li></ul>]
// ==/UserScript==

var b1 = "data:image/gif;base64,R0lGODlhCAAIANUAAAAAAP///xa9JhKcHxKaHw56GQ1wFwxnFR3zMRzoLxrbLBnSKhjMKRa5JRWuIxKXHg9/Gh/9NCP9OCX9OS79QTH9RDv9TT79UEr9Ww4sERQ+GBI4FhlNHhtSIBZDGlf+Z13+bGH+cGn+dy1iMnn+hXv+h37+iob+kU97U1N+V3mbfIKihYOihgsjDQ0oDxI2FQwkDg8sET1uQW2ScHCUc////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADUALAAAAAAIAAgAAAY3wFptpZqhhDXWqRS6jGo0E0mEoUQ4KdDHMkkwNLKKBKFwDF4dxUJAgBgyNU/jUTi0kJuYCyYMAgA7";
var b2 = "data:image/gif;base64,R0lGODlhCAAIANUAAAAAAP///703FpwuEpotEnokDnAhDWceDPNHHehEHNtAGtI+Gcw8GLk2Fq4zFZcsEn8lD/1LH/1OI/1QJf1XLv1ZMf1hO/1kPv1tSiMQCywUDj4cFDgaEk0jGVImG0MfFjYZEiQRDP54V/58Xf6AYf6GaWI3Lf6Tef6Ve/6Xfv6ehn5cU5J0bZR3cJuAeaKJgygSDSwUD25GPXtXT6KIgv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADUALAAAAAAIAAgAAAY3wFotBItxhLXMofBofGoaA4QgWCg8oIFDgZBUZBtGYmIRjVadCAVTOqVaNdOFhFK9kDOWiyYMAgA7";
var b3 = "data:image/gif;base64,R0lGODlhCAAIAPYEAKKUh5uLfZKAcXtlUv7Ejf67gf6xaP2dRGJIMJSDdP6/hP66f/61cP2kUf2WNf2OJk0zG35pVv6uZP6rXv2cQf2RLOiCI8xyHj4pFm5VQP2XOP2QKvOII9t6IK5fGpxXFjYjE1I2HdJ1Hr1pG5pWFn9HEnA+ECwdD0MsGLlnG5dSFnpEEWc6DyMXDDglFCwdECgaDiQYDaGifJubc5KSZ3t7SqGiffz+ff7+cfv+V/r9NGFiKZSUavz+dP7+b/v+X/r9QPn9JPn9FUxNFn1+Tvv+U/v+Tfr9Mfn9G+ToE8nMED0+Em5uOfn9J/n9Ge/zE9jbEa6uDpqcDDY2EFJSGM/SELq9D5iaDH1/Cm5wCSssDENDE7a5D5eXDHh6CWVnCCMjCjc4ECwrDSgoCyQkCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgBlACwAAAAACAAIAAAHPIBlZQAAAgOCgwQKBg2HAAQEDA0aFQgRBhIHFRYXLhkaGxwdHiQgIR0iKSQlJi9lCB4qKywtiC4vL2KCgQAh+QQFCgBlACwAAAAACAAIAAAHO4BlZTY2NDWCgzc9OUCHNjc3P0BNSDtEOUU6SElKYUyUT1BRV1NUUFVWV1hZWmVUXF1eX2SIU2JkU4KBADs=";

function getRealURL(urlID) {
    var theURL,link;
    link = document.querySelector('a[slID="'+urlID+'"]');
    theURL = link.getAttribute('data-full-url');
    var plusBox = document.getElementById('bsl'+urlID.substr(2));
    plusBox.innerHTML = '<img title="Click to fetch full URL" style="width:8px;height:8px;padding:2px;border:none" src="'+b3+'" alt="[+]">';
    GM_xmlhttpRequest({
        method:"HEAD",
        url:theURL,
        headers:{ "User-Agent":"monkeyagent", "Accept":"text/monkey,text/xml" },
        onload:function(content){
            var minusBox = document.createElement('a');
            
            link.setAttribute('smgm_origURL',link.innerHTML);
            link.setAttribute('smgm_origfURL',theURL);
            var newLink = link.cloneNode(true);
            newLink.href = content.finalUrl;
            newLink.innerHTML = content.finalUrl;
            link.parentNode.replaceChild(newLink,link);

            minusBox.innerHTML = '<img title="Click to collapse back to shortened URL" style="width:8px;height:8px;padding:2px;border:none" src="'+b2+'" alt="[-]">';
            minusBox.href="javascript:void(0);";
            minusBox.id = 'bsl'+urlID.substr(2);
            minusBox.addEventListener("click",function(){
                this.innerHTML = '<img title="Click to fetch full URL" style="width:8px;height:8px;padding:2px;border:none" src="'+b1+'" alt="[+]">';
                var aLink = document.querySelector('a[slID="'+this.id.substr(1)+'"]');
                aLink.setAttribute('data-full-url',aLink.getAttribute('smgm_origfURL'));
                aLink.innerHTML=aLink.getAttribute('smgm_origURL');
                aLink.href=aLink.getAttribute('smgm_origfURL');
                aLink.target="_blank";
                this.addEventListener("click",function(){getRealURL(this.id.substr(1));},false);
            },false);
            plusBox.parentNode.replaceChild(minusBox,plusBox);
        }
    })
}

function unescapeHTML(s){return s.replace('&amp;', '&').replace('&lt;',"<").replace('&gt;','>').replace('&quot;','1"').replace('&#39;','\'');}

var lc = 0;
document.addEventListener('DOMNodeInserted',function(e){
    window.setTimeout(function(){
        var newLinks = document.querySelectorAll('a[href*="po.st/"],a[href*="img.ly/"],a[href*="bit.ly/"],a[href*="goo.gl/"],a[href*="t.co/"],a[href*="db.tt/"],a[class*="extLink"],a[class*="url-ext"],a[class*="twitter-timeline-link"]');
        if (newLinks.length > 0)
        {
            for (var i = 0; i < newLinks.length; i++) {
                if (newLinks[i].className.match(/\bsmgm_usTitle\b/) == null && newLinks[i].innerHTML.indexOf('<img') < 0)
                {
                    lc++;
                    var plusBox = document.createElement('a');
                    newLinks[i].setAttribute('slID','sl'+lc);
                    if (newLinks[i].getAttribute('data-full-url') == null) newLinks[i].setAttribute('data-full-url',newLinks[i].href); 
                    plusBox.innerHTML = '<img title="Click to fetch full URL" style="width:8px;height:8px;padding:2px;border:none" src="'+b1+'" alt="[+]">';
                    plusBox.href="javascript:void(0);";
                    plusBox.id = "bsl" + lc;
                    plusBox.addEventListener("click",function(){getRealURL(this.id.substr(1));},false);
                    newLinks[i].parentNode.insertBefore(plusBox,newLinks[i].nextSibling);
                    (newLinks[i].className == "") ? newLinks[i].className = "smgm_usTitle" : newLinks[i].className = newLinks[i].className + " smgm_usTitle";
                }
            }
        }
        }, 200);}
    , false);


(с ~37 ночнушки ругается на: "Use of Mutation Events is deprecated. Use MutationObserver instead" и отказывается работать)

Или посоветуйте какой-нибудь другой "раскукоживатель" коротких ссылок.

Спасибо.

turbot пишет

какой-нибудь другой "раскукоживатель" коротких ссылок.

Действующая версия только до FF35 , или ждать следующую , или ставить gm-nightly https://arantius.com/misc/gm-nightly

Проблема не в гризманки (он у меня работает без проблем), а в:
https://developer.mozilla.org/en-US/doc … ion_events

Deprecated
This feature has been removed from the Web. Though some browsers may still support it, it is in the process of being dropped. Do not use it in old or new projects. Pages or Web apps using it may break at any time.

Видимо в ночнушках уже выпилили поддержку.

turbot пишет

Видимо в ночнушках уже выпилили поддержку.

38.0a1 (2015-02-13). Поддержка есть. Как проверил:
Закомментировал бяку

скрытый текст

Выделить код

Код:

/*.replace(''','\'')*/;}


extensions.greasemonkey.fileIsGreaseable > true
Создал и открыл html файл. Появился зелёный кружок.
скрытый текст

Выделить код

Код:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Test</title>
    </head>
    <body>
        <center></center>
        <script>
            setTimeout(function() {
                var a = document.createElement("a");
                a.href = "http://goo.gl/bla";
                a.textContent = "Short Link";
                document.body.firstElementChild.appendChild(a);
            }, 500);
        </script>
    </body>
</html>

Dumby
Ну я не настаиваю, может и не в этом причина (просто в консоль только на это ругается). Но скрипт не работает. Кружок и у меня появляется (но теперь не всегда. Например, на твиттере - появляется только при отключенных скриптах), а вот "раскукоживаться" - ссылки перестали.

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

na_voine пишет

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

javascript:document.getElementsByTagName('html')[0].contentEditable=true;
это можно в избраное добавить в поле ссылка и когда запускаешь можно удалять, редактировать все на страничке

Сегодня после обновления до 3.0 заметил что [firefox] стал потреблять оперативки примерно в 2 раза больше. Никто такое не наблюдает?

na_voine пишет

с помощью скриптов удалять куски страниц содержащие ключевые слова

Есть готовый скрипт, от Lain_13.

Подскажите, как достучаться к переменной seconds на странице, которая запускается во фрейме?

<iframe src="/a.htm" style="width:100%; height:500px;" scrolling="no" marginheight="0" marginwidth="0" frameborder="0"></iframe>

unsafeWindow.seconds пишет что переменная не определена.

Переменная определяется так:

Выделить код

Код:

<script language="javascript">
        document.getElementById('value').focus();
        var seconds = 30;
        function display_countdown()
        {
            if( seconds < 0 ) {
                seconds = 0;
            }
            document.getElementById('countdown').innerHTML = 'Countdown:&nbsp;<strong>' + seconds + '</strong>';
            seconds--;
            setTimeout( "display_countdown()", 1000 );
        }
        display_countdown();

Как убрать таймер ожидания установки скрипта?

extensions.greasemonkey.installDelay

turbot
Туплю, спасибо.

А где можно скачать 3,1 финал? На АМО - нету.
e9cf569b1beb.png

Vladik пишет

А где можно скачать 3,1 финал? На АМО - нету.

Как нет, а это что?
https://addons.cdn.mozilla.net/user-med … 3.1-fx.xpi

Помогите пожалуйста со скриптом,

скрытый текст
Есть такая строчка,
<span id="commentsSort_2" class="groupHeadingText commentSortOptions commentSortOptionsActive" href="#">Новые</span>

Нужно, чтобы "Новые" - менялись на "Старые" и id="commentsSort_2" на id="commentsSort_3"


Заранее спасибо.

Приветствую.
Подскажите скрипт, чтобы убрать что на скрине.
6632901m.png
AdBlock -ом убрать не получается (не знаю как).
Вот исходник страницы.

скрытый текст

Выделить код

Код:

}("<div class=\"head-stripe i-bem\" data-bem=\"{&quot;head-stripe&quot;:{&quot;is_geo_stripe&quot;:false,&quot;text2_url&quot;:&quot;https://yabs.yandex.ru/count/IRZN8L-XAwG400G0gQ10022EjdxYKWLIbGkR0M-CYBRH0mi7feK9YhaTS002gWsbfkow0Oq1aA0V0jwHjMfiFmoJXGr2em6kz02QhrE8lnC5iG6oa00CljRH0mjN0M2_r4pn2dS0OC7__________m_2ydSCif62wx8FnOyFUWu0&quot;,&quot;background_color_file2&quot;:&quot;&quot;,&quot;background_image&quot;:&quot;https://yabs.yandex.ru/resource/DF8uxlQ5fzkVo8a3uCoMA8_banana_20141031_cez_str_but_3_instal.png&quot;,&quot;void_url&quot;:&quot;https://yabs.yandex.ru/count/IRZN8GKXGXu400G0gQ10022EjdxYKWLIbGkR0M-CYBRH0mi7feK9YhaTS002gXAbfkow0Oq1aA0V0jwHjMfiFmoJXGr2em6kz02QhrE8lnC5iG6oa00CljRH0mjN0M2_r4pn2dS0OC7__________m_2ydSCif62wx8FnOyFUWu0&quot;,&quot;void_target&quot;:&quot;_blank&quot;,&quot;close_counter&quot;:&quot;https://yabs.yandex.ru/count/IRZN8Qab1kC400G0gQ10022EjdxYKWLIbGkR0M-CYBRH0mi7feK9YhaTS002gX-bfkow0Oq1aA0V0jwHjMfiFmoJXGr2em6kz02QhrE8lnC5iG6oa00CljRH0mjN0M2_r4pn2dS0OC7__________m_2ydSCif62wx8FnOyFUWu0&quot;,&quot;type&quot;:&quot;shift&quot;,&quot;height&quot;:&quot;30&quot;}}\"><div class=\"head-stripe__elements\"><img class=\"head-stripe__image\" src=\"https://yabs.yandex.ru/resource/DF8uxlQ5fzkVo8a3uCoMA8_banana_20141031_cez_str_but_3_instal.png\"/></div><div class=\"head-stripe__table\"><div class=\"head-stripe__col head-stripe__col_age_restriction\"><div class=\"head-stripe__age\">0+</div></div><div class=\"head-stripe__col head-stripe__col_text_1\"><a class=\"link link link_counter_yes head-stripe__text1\" target=\"_blank\" href=\"https://yabs.yandex.ru/count/IRZN8TGarfW400G0gQ10022EjdxYKWLIbGkR0M-CYBRH0mi7feK9YhaTS002gWQbfkow0Oq1aA0V0jwHjMfiFmoJXGr2em6kz02QhrE8lnC5iG6oa00CljRH0mjN0M2_r4pn2dS0OC7__________m_2ydSCif62wx8FnOyFUWu0\" onmousedown=\"w(this, '707.1432.232');\">Яндекс.Браузер с режимом Турбо — быстрая загрузка даже при медленном интернете</a></div><div class=\"head-stripe__col head-stripe__col_text_2\"><a class=\"link link link_counter_yes head-stripe__text2\" target=\"_blank\" href=\"https://yabs.yandex.ru/count/IRZN8L-XAwG400G0gQ10022EjdxYKWLIbGkR0M-CYBRH0mi7feK9YhaTS002gWsbfkow0Oq1aA0V0jwHjMfiFmoJXGr2em6kz02QhrE8lnC5iG6oa00CljRH0mjN0M2_r4pn2dS0OC7__________m_2ydSCif62wx8FnOyFUWu0\" onmousedown=\"w(this, '707.1432.494');\">Установить</a></div><div class=\"head-stripe__col head-stripe__col_close_yes\">&nbsp<span class=\"link link link_counter_yes head-stripe__close\" role=\"button\" tabindex=\"0\" onmousedown=\"w(this, '707.1432.486');\"><span class=\"head-stripe__x\">×</span></span></div></div></div>");</script><div class="no-connection i-bem" data-bem="{&quot;no-connection&quot;:{}}"><div class="no-connection__wrapper"><div class="no-connection__message"></div><button class="button button_size_m button_theme_normal no-connection__reload i-bem" data-bem="{&quot;button&quot;:{}}" role="button" type="button" onmousedown="w(this, '143.1395');"><span class="button__text">Попробовать еще раз</span></button></div></div></div><div class="paranja paranja_state_close paranja_theme_normal z-index-group i-bem" data-bem="{&quot;paranja&quot;:{&quot;rel&quot;:[{&quot;elem&quot;:&quot;.header__action_type_srv&quot;,&quot;event&quot;:&quot;pressed&quot;,&quot;method&quot;:&quot;open&quot;},{&quot;elem&quot;:&quot;.header__action_type_srv&quot;,&quot;event&quot;:&quot;released&quot;,&quot;method&quot;:&quot;close&quot;}]}}"></div><div class="footer clearfix" role="contentinfo"><div class="footer__column footer__column_side_right"><a class="link link link_counter_yes footer__link" href="//yandex.ru/search/customize?retpath=http%3A%2F%2Fyandex.ru%2Fsearch%2F%3Flr%3D213%26text%3D%25D0%25B0" onmousedown="w(this, '295.1137');">Настройки</a><a class="link link_visibility_hidden link link_counter_yes footer__link" target="_blank" href="//mobile.yandex.ru" onmousedown="w(this, '295.1006');">Приложения</a><a class="link link link_counter_yes footer__link" target="_blank" href="//feedback2.yandex.ru/newserp/" onmousedown="w(this, '295.296');">Обратная связь</a><a class="link link link_counter_yes footer__link" target="_blank" href="//help.yandex.ru/search/" onmousedown="w(this, '295.177');">Помощь</a><a class="link link link_counter_yes footer__link" target="_blank" href="http://advertising.yandex.ru/kupislova.xml?advertising" onmousedown="w(this, '295.1');">Реклама</a><a class="link link link_counter_yes footer__link" target="_blank" href="//stat.yandex.ru/stats.xml?ReportID=-225&amp;ProjectID=1" onmousedown="w(this, '295.989');">Статистика</a><a class="link link link_counter_yes footer__link" target="_blank" href="//company.yandex.ru/legal/termsofuse/" onmousedown="w(this, '295.990');">Лицензия на поиск</a><a class="link link link_counter_yes footer__link" target="_blank" href="//company.yandex.ru/" onmousedown="w(this, '295.280');">О компании</a><div class="copyright">&copy;&nbsp;1997&ndash;2015&nbsp;&nbsp;<span class="copyright__name">ООО «Яндекс»</span></div></div></div><div class="serp serp__spin i-bem" data-bem="{&quot;serp&quot;:{&quot;uniqId&quot;:&quot;search&quot;,&quot;connectionError&quot;:{&quot;message&quot;:&quot;Проверьте соединение с интернетом&quot;},&quot;resultError&quot;:{&quot;message&quot;:&quot;Не удалось получить результаты&quot;}}}"></div><script>w(this, '471.143.842', null, "//yandex.ru/clck/safeclick/data=AiuY0DBWFJ7IXge4WdYJQSaYtyyri96F9995cpcmF2sLPBI2lnr9NohD8yaoyE3izOvpdg58xIrdOs_O1GAF8FO5E7yLk8XW5X91oYA-7aWK8AUHslaADRCJThH7S9NHhaLFDNeDTPB8ge8FtENa809tw2NcSdQ3CzeyoOKYmUb2lBewj8UtvhF0G-AQMfL5/sign=c72b934aa5ba9f53e3c1fa41a023e48a/keyno=0", null, window.startPageLoad);</script><script src="//yastatic.net/jquery/1.8.3/jquery.min.js"></script><script src="//yastatic.net/web4/0x2a71b6b/pages-desktop/search/_search.ru.js"></script><script>var _borschik=function(){var t=this._borschik||function(i){return!(i in t||t[i]++)};return t}();_borschik("wVvHjvLR9J9kXauxJ1T-1nSyUMA")&&!function(t,i){var n="";


Извините, без переносов.

стилем этим убирается
.head-stripe {display: none;}

Бумбик
Спасибо. Обошёлся установкой скрипта No Yandex Ads.
Как рукой сняло.

Я что то пропустил? Не открывается Greasy Fork. Опять куда то скрипты переехали?

villa7
Пару дней назад userstyles.org переезжал на новый сервер. Может, в этом дело (владелец же один)?

turbot
Сервер пьяный, понятно, будем ждать:)

Как-то видел дополнение, которое очищает поля ввода и пр. прокруткой мышиного колеса. Но ставить дополнение ради такой мелочи неохота. Может кто скрипт присоветует? Или напишет... ;)

Ultima2m
Для очистки поля поиска колесом есть код для инициализации, в любую кнопку положить. Туда же и для других полей можно код добавить, наверное.

Хрюн
Спасибо
Еще бы текстовые поля подключить.:D Памагите хто може.

И еще вопрос.
Есть несколько скриптов "линкификаторов"
например этoт:

скрытый текст

Выделить код

Код:

// ==UserScript==
// @id             Linkification
// @name           Linkification
// @version        1.0
// @namespace      http://userscripts.org/users/splurov/
// @author         Splurov
// @description    Linking text
// @run-at         document-end
// @include        *
// ==/UserScript==


(function(){

// (c) http://data.iana.org/TLD/tlds-alpha-by-domain.txt
var domains = ['ac', 'ad', 'ae', 'aero', 'af', 'ag', 'ai', 'al', 'am', 'an', 'ao', 'aq', 'ar', 'arpa', 'as', 'asia', 'at', 'au', 'aw', 'ax', 'az', 'ba', 'bb', 'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'biz', 'bj', 'bm', 'bn', 'bo', 'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cat', 'cc', 'cd', 'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'com', 'coop', 'cr', 'cu', 'cv', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'do', 'dz', 'ec', 'edu', 'ee', 'eg', 'er', 'es', 'et', 'eu', 'fi', 'fj', 'fk', 'fm', 'fo', 'fr', 'ga', 'gb', 'gd', 'ge', 'gf', 'gg', 'gh', 'gi', 'gl', 'gm', 'gn', 'gov', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu', 'gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il', 'im', 'in', 'info', 'int', 'io', 'iq', 'ir', 'is', 'it', 'je', 'jm', 'jo', 'jobs', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp', 'kr', 'kw', 'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu', 'lv', 'ly', 'ma', 'mc', 'md', 'me', 'mg', 'mh', 'mil', 'mk', 'ml', 'mm', 'mn', 'mo', 'mobi', 'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'museum', 'mv', 'mw', 'mx', 'my', 'mz', 'na', 'name', 'nc', 'ne', 'net', 'nf', 'ng', 'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om', 'org', 'pa', 'pe', 'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'pro', 'ps', 'pt', 'pw', 'py', 'qa', 're', 'ro', 'rs', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd', 'se', 'sg', 'sh', 'si', 'sj', 'sk', 'sl', 'sm', 'sn', 'so', 'sr', 'st', 'su', 'sv', 'sy', 'sz', 'tc', 'td', 'tel', 'tf', 'tg', 'th', 'tj', 'tk', 'tl', 'tm', 'tn', 'to', 'tp', 'tr', 'travel', 'tt', 'tv', 'tw', 'tz', 'ua', 'ug', 'uk', 'us', 'uy', 'uz', 'va', 'vc', 've', 'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'ye', 'yt', 'yu', 'za', 'zm', 'zw'];

// (c) http://yellow5.us/firefox/linkification/
var tagsForSkip = ['a', 'applet', 'area', 'embed', 'frame', 'frameset', 'head', 'iframe', 'img', 'map', 'meta', 'noscript', 'object', 'option', 'param', 'script', 'select', 'style', 'textarea', 'title'];

var inArray = function(value, items) {
    for (var i = 0; items[i] && value != items[i]; i++);
    return value == items[i];
}

var urlsRegExp = /(^|[\s()\[\]_:~+@*"'>])((?:https?|ftp|irc):\/\/)?([-a-z\d;:&=+$,%_.!~*'()]+@)?((?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:(www|irc|ftp)\.)?(?:(?:[a-z\d]|[a-z\d][a-z\d-]*[a-z\d])\.)+([a-z]{2,6}))(:\d+)?(\/(?:[-\w.!~*'()%:@&=+$,;\/]*[\w~*%@&=+$\/])?(?:\?(?:[-\w;\/?:@&=+$,.!~*'()%\[\]|]*[\w\/@&=+$~*%])?)?(?:#(?:[-\w;\/?:@&=+$,.!~*'()%]*[\w\/@&=+$~*%])?)?|\b)/i

var linksCounter = 0;

var current = document.body;
while (current) {
    if (current.nodeName == '#text' && (match = current.nodeValue.match(urlsRegExp)) && inArray(match[6], domains)) {
        var url;
        if (match[3] && ! match[2] && ! match[5] && ! match[8] && (match[3].indexOf(':') == -1 || match[3].indexOf('mailto:') == 0)) {
            url = (match[3].indexOf('mailto:') == -1 ? 'mailto:' : '')
                    + match[3]
                    + match[4];
        }
        else {
            url = (match[2] ? match[2] : (! match[5] || match[5] == 'www' ? 'http' : match[5]) + '://')
                    + (match[3] ? match[3] : '')
                    + match[4]
                    + (match[7] ? match[7] : '')
                    + (match[8] ? match[8] : '');
        }
        if (url) {
            var range = document.createRange();
            range.setStart(current, match.index + match[1].length);
            range.setEnd(current, match.index + match[0].length);
            var a = document.createElement('a');
            a.setAttribute('href', url);
            a.setAttribute('class', 'linkified');
            a.appendChild(range.extractContents());
            range.insertNode(a);
            range.detach();
            linksCounter++;
        }
    }
    if (current.tagName && !inArray(current.tagName.toLowerCase(), tagsForSkip) && current.firstChild) {
        current = current.firstChild;
    }
    else if (current.nextSibling) {
        current = current.nextSibling;
    }
    else {
        do {
            current = current.parentNode;
        } while (!current.nextSibling && current.parentNode);
        current = current.nextSibling;
    }
}

if (linksCounter > 0) {
    var style = document.createElement('style');
    style.type = 'text/css';
    style.appendChild(document.createTextNode('a.linkified:before {content: "#"; color: #e00;}'));
    document.getElementsByTagName('head')[0].appendChild(style);
}

})();


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

При установке скрипта появляется счетчик.
Это где-то регулируется или в дополнении зашито?

Ultima2m
extensions.greasemonkey.installDelay;0

Подскажите, пожалуйста, решение. Есть, вот например, ссылка imgur.com/r/Cinemagraphs/Jxi6Fa1 . Там внутри на самом деле gif, но на уровне сайта там упаковывают толи в mp4, толи в какой-то gifv, плюс непонятно зачем там flash (flash block показывает, что заблокировал элемент). Как сделать, чтоб было по-человечески, просто gif файл в том блоке. Или на крайний случай что-то вроде редиректа с imgur.com/r/Cinemagraphs/Jxi6Fa1 на i.imgur.com/Jxi6Fa1.gif . Но желательно всё же вырезать все эти извращения по всему сайту. Подсобите скриптом или иным решением.

CGGB
Direct Images, но почему-то именно с травой не срабатывает, спросите у Infocatcher'a.

CGGB
Откуда там .gif если там .webm

Выделить код

Код:

SOURCE
namespaceURI: XHTML
margin: 0
border: 0
padding: 0
src = //i.imgur.com/Jxi6Fa1.webm
type = video/webm
Kamui пишет

Direct Images, но почему-то именно с травой не срабатывает, спросите у Infocatcher'a.

Вроде, подправил: если перейти на http://imgur.com/Jxi6Fa1?tags, там будет уже оригинальный .gif.

Только у меня?: "Greasemonkey 3.4 – новые скрипты не устанавливаются, старые - не редактируются. С 3.3 всё нормально".
UPD: Сейчас на 3.4 всё работает. Ничего не ставилось и не удалялось. (?)

Тоже были проблемы с разными скриптами на Greasemonkey. Заменил на Scriptish, и все ок! )

Kamui,
Infocatcher,
Спасибо

Уважаемые господа!
А скажите пожалуйста!
Можно ли в с помощью GreasyMonkey править DOM-дерево страницы?
А сохранять инфу со страницы на диск без запроса пользователя (автоматом)

Доктор ТуамОсес пишет

Можно ли в с помощью GreasyMonkey править DOM-дерево страницы?

можно.

Доктор ТуамОсес пишет

А сохранять инфу со страницы на диск без запроса пользователя (автоматом)

нет, запрос будет. если запрос не нужен, нужно писать полноценное лисье расширение.

CoolCmd пишет

нет, запрос будет

Спасибо большое. Вы сэкономили мне УЙМУ времени, которое я бы убил пытаясь написать парсер (сохраняющий выбранные куски ВЕБ-страниц на диск) с помощью "Засаленной Обезьяны ("автомеханика")").

А в чем причина ограничений?
В том что "обезьяна" позволяет просто писать чиста жабаскрипты, а жабаскрипты ПО ОПРЕДЕЛЕНИЮ не могут обмениваться инфой с локал хостом (через диск, или буфер обмена)?

ДА?

03-11-2015 19:14:51

CoolCmd пишет

нужно писать полноценное лисье расширение

Понял. Просто JS-ом здесь не обойтись.

Спасибо.

Буду гуглить разные фреймворки и надстройки. И прочие извраты "для программирования в брОузере"

Доктор ТуамОсес пишет

В том что "обезьяна" позволяет просто писать чиста жабаскрипты, а жабаскрипты ПО ОПРЕДЕЛЕНИЮ не могут обмениваться инфой с локал хостом (через диск, или буфер обмена)?

у GM есть GM_xmlhttpRequest, но он не дает доступа к file:///, не знаю почему, возможно по соображениям безопасности.

Доктор ТуамОсес пишет

Буду гуглить разные фреймворки и надстройки. И прочие извраты "для программирования в брОузере"

мутная тема...

CoolCmd пишет

мутная тема...

А что делать?
Мне нужно инфу со страницы сливать на локальный диск. Причем в фоне. Без участия юзверя (то бишь меня)

Приветствую.
Есть скрипт, отключающий авто-воспроизведение на Mail.ru: WE NO NEED AUTOPLAY.
Может кто-нибудь встречал подобный для sportbox.ru или сможет написать?

del

Здравствуйте не работает GoogleMonkeyR :angry: поделитесь рабочим.

broker, у меня он тоже работает через раз. Надо зайти в настройки поиска, после чего нажать кнопку "сохранить изменения", но так надо делать постоянно :(

PEAKTOP Не радует ситуация надеюсь скоро починять :(

broker, попробуй эту версию. Вроде работает

PEAKTOP
У меня та самая версия не работает, ни в скриптиш ни в монкей:angry: мозилка 38.4

Здравствуйте, подскажите что поправить, чтобы скрипт заработал в Greasemonkey

Выделить код

Код:

// ==UserScript==
// @name        width
// @include       *
// @version     1
// ==/UserScript==

javascript:(function(){function%20t(f){a=d.createNodeIterator(d,1,f,false);while(a.nextNode()){}}var%20d=document;t(function(e){x=e.offsetLeft;l=e.offsetParent;while(l!=null){x+=l.offsetLeft;l=l.offsetParent}var%20w=d.documentElement.clientWidth-x;var%20s=e.style;if(s.marginLeft)w-=s.marginLeft;if(s.marginRight)w-=s.marginRight;if(s.paddingLeft)w-=s.paddingLeft;if(s.paddingRight)w-=s.paddingRight;if(s.borderSize)w-=s.borderSize;w-=d.defaultView.innerWidth-d.documentElement.offsetWidth;if(e.tagName=='IMG'){h=e.clientHeight*w/e.clientWidth;s.maxHeight=h}s.maxWidth=w+'px'})})();

//.user.js

этот же скрипт с закладки нормально работает.

Привет всем.
Есть проблема со скриптом
Здесь чуть другая версия, но проблема та же
скрипт ломает отображение кнопок на некоторых сайтах

Перестал работать addons.mozilla.org Language Redirect . Как исправить?

У меня вопрос касающийся больше расширения чем скриптов. Иногда приходится включать-выключать скрипты. Жму на обезьянку - появляется меню - отключаю скрипт - меню сворачивается. Опять жму на обезьянку - появляется меню - включаю другой скрипт - меню сворачивается. Как сделать что было так, нажал на обезьянку - появилось меню - отключил один скрипт - включил другой - нажал на обезьянку - меню закрылось. Может стиль какой, или кнопка для CB?

Mishania, в меню есть пункт "Управление скриптами", включай/отключай сколько захочешь.

PEAKTOP
Вы меня не поняли, я хочу чтоб было проще. Когда я жму на иконку у меня показаны скрипты которые я использую на странице. А если использовать "Управление скриптами" то открывается страница со всеми скриптами которые установлены в гризманке. А у меня не два скрипта установлены.

Mishania пишет

или кнопка для CB?

С мыши чтоб меню не закрывалось что ли :/

скрытый текст

Выделить код

Код:

((listener, popup = document.getElementById("greasemonkey-tbb").firstChild) =>
    ["mousedown", "popuphiding"].forEach(type => addEventListener(type, listener, false, popup))
)({handleEvent(e) {
    if (e.type != "popuphiding") this.flag = e.target.script && !e.button;
    else if (this.flag) e.preventDefault(setTimeout(obj => obj.flag = false, 50, this));
}});

Mishania, всё правильно понял, но т.к. Jscript'ом не владею, то посоветовал этот способ.

Dumby
Отлично! Как раз то что надо.

Скажите пожалуйста как из меню "Экстра", удалить Greasemonkey?
Вот это не работает:

menu[label="Extras"] menuitem[label="Greasemonkey"] {
display: none !important;
}

Подскажите пожалуйста, есть ли возможность загрузить js скрипт на какой-то хостинг (например http://test.test/user.js), а в самом скрипте для Greasemonkey прописать ссылку на загруженный js и выполнять его? Как бы все тело скрипта должно находится на другом ресурсе.
Что-то вроде такого:

// ==UserScript==
//....................
// ==/UserScript==

(function (window, undefined) {

#include "http://test.test/user.js"

})(window);



А еще скажите... Мне надо сделать инжект в уже существующую функцию. Правильно ли использовать конструкцию window['main_fuction'] = main_fuction_custom; ? Может для этого есть другие методы?

Всех скриптописателей с праздником! Прошу помочь. Нашел скрипт для себя, но чутка треба поправить. Сам скрипт Universal_Links_Checker_v7.user для конвертации текстовых ссылок в кликабельные. Работает хорошо, но хотелось бы, что бы ссылки выделялись цветом, а то не всегда видишь их. К примеру желтый фон и фиолетовая ссылка. Помогите знатоки.
Скрипт большой, не влазит. По ссылке http://rghost.ru/86Z5ppqfL

подскажите пожалуйста, как на сайте http://www.flirt4free.com в таблице моделей оставить только те у которых пометка in show, остальные скрыть? 2455021991f06c_o.jpg Можно такой скриптик написать? Спасибо

del

Xant1k пишет

Последнее время «подкладывают» гиперссылки внутри которых не тот адрес что виден. Есть ли какой скрипт исправляющий это?
Пример: https://forum.mozilla-russia.org/viewtopic.php?id=5499&p=26

При наведении на ссылки курсором в левом нижнем углу браузера же показывается ссылка...

udalov пишет

При наведении на ссылки курсором в левом нижнем углу браузера же показывается ссылка...

Совсем не обязательно... Если на ссылку навешен обработчик мышиного события, то переход может быть совсем не туда, куда обещает строка статуса. Google вам в качестве примера: наведите мышь на любую ссылку в поисковой выдаче, а потом щёлкните по ссылке правой кнопкой и полюбуйтесь на чудо.

yup пишет

наведите мышь на любую ссылку в поисковой выдаче, а потом щёлкните по ссылке правой кнопкой и полюбуйтесь на чудо.

И что же такого чудесного в контекстном меню? :)

voqabuhe пишет

И что же такого чудесного в контекстном меню? :)

В меню - ничего. А в строке статуса?

yup пишет

В меню - ничего. А в строке статуса?

И чё? Что показало, то и открылось. И причём тут ПКМ, зачем тогда меню открывали? :)

voqabuhe пишет

И чё? Что показало, то и открылось.

Вообще-то, если в браузер не добавлено какое-то антигугловское средство, то при наезде мышкой на ссылку в строке статуса показывается один URL, а после клацания - совсем другой. И браузер первым делом пойдёт на него, а вовсе не на первоначально показываемый.

voqabuhe пишет

зачем тогда меню открывали?

А выскакивание меню - так, побочный эффект :D

yup
После отключения Remove fake links, понял о чём ты. :D А я и забыл, что его когда-то ставил.

yup пишет

Совсем не обязательно... Google вам в качестве примера: наведите мышь на любую ссылку в поисковой выдаче, а потом щёлкните по ссылке правой кнопкой и полюбуйтесь на чудо

Сделал. Из всех ссылок с первой страницы выдачи прямая ссылка не показалась только в одном случае, со всеми остальными было всё нормально. Может, зависит от браузера и настроек?

udalov пишет

Может, зависит от браузера и настроек?

Скорее, от установленных скриптов/дополнений. Вон, у voqabuhe оказался Remove fake links, а подобных ему пару десятков понасоздано.
И ещё отрубание Javascript помогает (через NoScript, например).

Но речь же не о Googlе, это просто общедоступный пример того, что тексту URL в строке статуса нельзя доверять. Тот же Remove fake links - он ведь сугубо под Google и Яндекс заточен.

Здравствуйте.
Подскажите, где можно почитать про основные команды, которыми можно писать скрипты для Гризманки? Например: открыть ссылку - такая то команда, вывести сообщение - такая то и так далее. Вот это только https://wiki.greasespot.net/Tutorials ?
Наподобие вот такого http://wiki.imacros.net/Command_Reference для Аймакроса.

udalov
Ничего своего собственного GreaseMonkey практически не имеет. Обычный JavaScript, который исполняется в контексте страницы и которому доступно ровно то же, что и обычным скриптам на этой странице, плюс несколько переменных и функций, описанных вот здесь: https://wiki.greasespot.net/Greasemonkey_Manual:API.

подскажите строчку кода, которая бы при заходе на эту страницу нажимала на кнопку "войти в почту"

скрытый текст
4c00872d2239.jpg

Выделить код

Код:

content.document.forms[0].submit();

turbot

сделал так

Выделить код

Код:

// ==UserScript==
// @name           rambler
// @description    Автологин
// @include        https://mail.rambler.ru/
// @include        https://mail.rambler.ru/?login=&domain=@rambler.ru&password=
// ==/UserScript==

content.document.forms[0].submit();


чёт не жмется...

Inko7

Выделить код

Код:

// @run-at document-idle

в метаданные.

здесь у каждой новости справа внизу есть кнопочка "Открыть источник во фрефме" :)
Как открыть источник в background tab?

Или по другому:
при открытии новости, например, автоматически "кликнуть" ссылку "Читать на сайте" внизу (class = content-source clearfix). Желательно открыть ссылку в этой же вкладке.

Нужен небольшой скриптик для ютуба который дописывает к ссылкам вида https://www.youtube.com/channel/nazvaniekanala и https://www.youtube.com/user/nazvaniekanala приставку /videos чтобы получалось https://www.youtube.com/channel/nazvaniekanala/videos Гуглил много но рабочий вариант так и не нашел

vet41, среди всего остального на что способен YouTube + есть и "Страница канала по умолчанию Видео(или выбор из 6 пунктов)".

vitalii201 пишет

vet41, среди всего остального на что способен YouTube + есть и "Страница канала по умолчанию Видео(или выбор из 6 пунктов)".

громоздкий он уж очень да и ютуб я в браузере не смотрю вообще

turbot
добавил строку в метаданные, но не помогло...

скрытый текст
// ==UserScript==
// @name           Rambler Mail - AutoLogin
// @description    Автологин на стартовой странице
// @include        https://mail.rambler.ru/
// @include        https://mail.rambler.ru/?login=*
// @run-at document-idle
// ==/UserScript==

content.document.forms[0].submit();


в таком варианте постоянно обновляется (перегружается) страница
что еще можно сделать?

Inko7
Чем мог. idontnow.gif
Куда перенаправляет после логина если логиниться вручную? С какой страницы?
У меня нет аккаунта, чтоб проверить, а без мобильного там не зарегаться.
Ну и, может данные подставиться в форму не упесвеают, может так:

Выделить код

Код:

// ==UserScript==
// @name           rambler
// @description    Автологин
// @include        https://mail.rambler.ru/
// @include        https://mail.rambler.ru/?login=*&domain=%40rambler.ru&password=*
// @grant none
// ==/UserScript==
window.addEventListener('load', function func() {
    window.removeEventListener('load', func);
    setTimeout(()=>{
        content.document.forms[0].submit();
    },300)
});

turbot
все то же...
ладно, спасибо, буду сам разбираться...
один вопрос: как узнать, что нужно вот так?

Выделить код

Код:

content.document.forms[0].submit();

через DOM Inspector ?

Inko7
Угу. Можно и в дефолтных инструментах смотреть.

спасите  помогите   :) две проблемы, психую третий день, может  программизм не моё...

FF 47
Не выводится инфа в консоль встроенного  в FF инспектора
А при включенном дополнении Firebug выводит: API ведения логов веб-консоли (console.log, console.info, console.warn, console.error) был отключен скриптом на этой странице.
В  FireBug нормально выводит.

_________________________________________

04-08-2016 12:26:05
Вопрос два.

FF 47
из установленного:
FireBug
FireFinder
Greasemonkey (здесь скрипт автоматизации и пишу)

Страница:
https://mybank.oplata.kykyryza.ru/

кликаю инспектировать элемент на поле ввода, затем правым кликом -> копировать xpath
xpath ввода штрих-кода: /html/body/div/div/div[1]/div/div[2]/form/div[3]/input
тут же ввожу его в Firefinder и .. пустота.

И консоль  выдаёт что такого элемента нема:

Выделить код

Код:

var xpath3='/html/body/div/div/div[1]/div/div[2]/form/div[3]/input';
    var path_shtrih_Code = document.evaluate (xpath3, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
    console.log("ШТРИХ:"+path_shtrih_Code.singleNodeValue);

что за хрень ?
(На других страницах нормально работает,на этой например, находит выданный xpath элементов)

selevo
У меня вроде работает.

Выделить код

Код:

var xpath3="//input[contains(@class, 'authentication-form')]";
turbot пишет

selevo
У меня вроде работает.

Выделить код

Код:

var xpath3="//input[contains(@class, 'authentication-form')]";

:)
каким образом получился такой xpath, ручным писанием, анализом ?

А вообще  подскажите как  быстро "адрес" элементов находить чтоб жамкнуть по ним, заполнить, скопировать.
Может я по трудному пути пошёл...
Просто xpath,  firebug  по клику кнопки показывает и я слегка знаю как  этим управлять.

selevo пишет

ручным писанием

:rolleyes:

ну вот,а это долго
вот смотри как я делаю ,5 секунд
https://youtu.be/3Q_9bVS0UqU

минус  в том что эти две  строки обработки надо писать

Выделить код

Код:

var PutKuzlu='/html/body/div/div/div[1]/div/div[2]/form/div[3]/input';
    var uzel = document.evaluate (PutKuzlu, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);

а затем уже  например клик:

Выделить код

Код:

uzel.singleNodeValue.click();

почему    текстовый  редактор в грисмонкей отличается от того который  в браузере ?
в гисмонкее нет кнопок  запустить исследовать отобразить
и вообще нет меню "выполнить"
при этом я не помню как  я  свой первый скрипт запустить умудрился без этого меню.
E7S7v3URNck.jpg

Greasemonkey + atom или notepad++
как в этих редакторах скрипт запустить в мозиле конечно?

Уважаемые, не могли бы вы написать скрипт, который бы убирал пустое место от рекламы на сайте www.inoreader.com ? Попробовала три штуки отсюда, но они уже давно сделаны, а рекламный блок только в августе появился.

Electrika
Если Вы про тот блок, что справа от списка, то для себя сделал так. В блокировщике рекламы скрыл блок
inoreader.com###sinner_container
и сделал стиль (для Stylish)

Выделить код

Код:

@-moz-document domain("inoreader.com") {
    .reader_pane_sinner {
    right: -200px !important;
  }
}

Может, решение и корявое, но эффективное - у меня работает. ;)

xrun1 Спасибо! Исчез треклятый блок.
А кстати, последние пару дней стал подглючивать [inoreader] интерфейс - это только у меня? Прошу прощения за оффтоп

bezuma
:offtopic:

скрытый текст
Мне кажется это не интерфейс, а серверы у Innologica тормозят. Ходите по http - это быстрее. А если пользуетесь кнопкой/дополнением Inoreader Companion, то снимите галочку в настройках.

xrun1, ура, ваш скрипт помог, спасибо!

bezuma, у меня inoreader грузится без проблем.

:offtopic:Раз уж я здесь начал оффтоп по Inoreader, здесь сам и закончу.
Стиль, который предложил 3-мя постами выше не совсем правильный - скрывается полоса прокрутки. Вот так будет правильно

Выделить код

Код:

@-moz-document domain("inoreader.com") {
.reader_pane_sinner {
   padding-right: 0 !important;
  }
}

Нужен скрипт автоматически разворачивающий спойлеры на livejournal.com. Не в комментариях. (!)

leshiy_odessa

Выделить код

Код:

// ==UserScript==
// @name        LJ spoilers
// @namespace   spoilers
// @include     http://*.livejournal.com/*
// @version     1
// @run-at      document-end
// @grant       none
// ==/UserScript==

var spoilers = document.getElementsByClassName('ljcut-link-expand');
for (var i = 0; i < spoilers.length; i++) spoilers[i].click();

yup


Спасибо за ответ. Но скрипт не работает. Он открывает последний по счету пост.

Мне нужно открытие всех спойлеров на главной странице пользователя. Например тут —

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

leshiy_odessa

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        LJ spoilers
// @namespace   spoilers
// @include     http://*.livejournal.com/*
// @version     1
// @run-at      document-end
// @grant       none
// ==/UserScript==

  for(var i=0;i<content.document.getElementsByClassName('ljcut-link-expand').length;i++) {
             content.document.getElementsByClassName('ljcut-link-expand')[i].click()
                }

mokujin

Всё тоже самое, открывается последний пост на странице.

Если это положить в кнопку все открывает как нада. В Код. Из скрипта и у мя, тоже чёт не хочет.

mokujin
leshiy_odessa
А так?
// @run-at      document-idle

ifln

Ура!!! Огромное спасибо, работает отлично.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        LJ spoilers
// @namespace   spoilers
// @include     http://*.livejournal.com/*
// @version     1
// @run-at      document-idle
// @grant       none
// ==/UserScript==

  for(var i=0;i<content.document.getElementsByClassName('ljcut-link-expand').length;i++) {
             content.document.getElementsByClassName('ljcut-link-expand')[i].click()
                }


update Проверил код от yup и он тоже работает. Теперь мой мозг перфекциониста, но не программиста должен выбрать какой оставить :)

leshiy_odessa
Мне тут подсказали, использовать нужно так как сделано у yup

del

Xant1k пишет

1) Последнее время «подкладывают» гиперссылки внутри которых не тот адрес что виден. Есть ли какой скрипт исправляющий это, или может кто напишет?

Скрипты такие есть, да и свой написать не сложно. Но я предпочитаю на портить необратимо страничку, а использовать дополнение Redirect Bypasser.
И есть одна не решаемая никакими средствами проблема: воевать можно только со ссылками, подменяемыми средствами HTML. Подмену, выполняемую через JavaScript, зачастую, не только исправить, но даже и обнаружить невозможно.

Попробовал сделать "автооткрывалку" спойлеров для Reddit-a

Выделить код

Код:

// ==UserScript==
// @name        Reddit spoilers
// @namespace   spoilers  
// @include     http*://*reddit.com/*
// @version     1
// @run-at      document-idle
// @grant       none
// ==/UserScript==

  for(var i=0;i<content.document.getElementsByClassName('expando-button collapsed video').length;i++) {
             content.document.getElementsByClassName('expando-button collapsed video')[i].click()


Но открываются не все спойлеры.

Как исправить?
К примеру или рандомный тред

vitalii201

Выделить код

Код:

var spoilers = document.getElementsByClassName('expando-button');
for (var i = 0; i < spoilers.length; i++) spoilers[i].click();

20-02-2017 18:06:12
тока где там спойлеры, на реддит, я так и не нашел.

vitalii201 пишет

Как исправить?

Помогает перебор в обратном порядке:

Выделить код

Код:

var e = document.getElementsByClassName('expando-button collapsed video');
for(var i=e.length-1; i>=0; i--) e[i].click();

mokujin, спасибо!
P.S.
yup и ваш код работает, спасибо!

скрытый текст
А мой после перезапуска – нет. )

И какой теперь оставить? )

vitalii201 пишет

И какой теперь оставить? )

ну тыж видишь, что разница в том что ищется. Несколько элементов с конца , как показал yup  или один.
Если не глючит(не жмакает куда не надо) то оставляй более обширный вариант (с одним классом expando-button ).
Если глючит(жмакает туда куда не должно), то делай более узкий выбор элемента с несколькими классами "expando-button collapsed video" с обратным порядком.

vitalii201 пишет

А мой после перезапуска – нет. )

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

Есть такая проблема. Магазин прячет весь список товаров и для продолжения списка нужно нажимать — "Еще 12 товаров". Пример —  http://www.tavriav.ua/305/c305/

Возможно ли сразу открыть весь список?

leshiy_odessa
То что пришло в голову, но пашет. Пока будешь крутить - будет жмакацца кнопка

Выделить код

Код:

// ==UserScript==
// @name                     more-goods
// @namespace            default
// @version                  2.0
// @grant                     none
// @include               http://www.tavriav.ua/*
// @run-at                document-start
// ==/UserScript==

document.addEventListener("DOMMouseScroll", function(e) {

    var elem = document.getElementsByClassName("btn-link-i sprite-bf");
        elem[0].click();

    });

leshiy_odessa

Выделить код

Код:

function PressButton() {
  if ((document.getElementsByClassName("btn-link-i sprite-bf").length > 0) && (document.getElementsByClassName("btn-link-i sprite-bf hidden").length == 0)) {
    document.getElementsByClassName("btn-link-i sprite-bf")[0].click();
    setTimeout(PressButton, 1000);
  }
}
setTimeout(PressButton, 1);

mokujin

Хитро.  Сначала думал, что не работает ибо по привычке я скролю не колесиком, а полосой прокрутки. А её можно добавить?

Еще мне кажется что можно тогда сразу зациклить на N количество раз. N можно вычислять из количества страниц — <a href="/305/c305/page=17/" class="b-paginator-l-i-link txt-black">17</a>.
Или второй вариант, когда сама кнопка исчезает при появлении последней страницы.

27-02-2017 23:51:28
yup

Шо то не идет. :/ Ничего не происходит.

update2 Ага догадался сделать // @run-at                document-idle

update3 PressButton, 1000 — это как то жестоко.

замени "DOMMouseScroll"   на просто "scroll" , будет жмакать при любом шевелинии страницы(думаю это не очень хорошо, но не уверен). Но онож подгружается снизу, полоска дергается... так шо лучше мышом, если ноут - двумя пальцами по тачпаду(найти прогу для своего ноута).
ну или клавишами ↑ ↓ :rolleyes:

mokujin

Со "scroll" просто волшебно. Скорость открытия впечатляет. Теперь бы скрестить вашу скорость с вариантом от yup. У yup оно делает то что нужно, открывает страницу, но видна задержка в ~500мс. А у mokujin хватаешь за ползунок и вжикаеш вниз и страница наполняется ну очень быстро.

update Черт, я понял что у yup 1000 это задержка, а не количество нажатий.

ну просто у мя за количество кликов отвечает сам бравзер, пока крутишь страницу, пока и будет искать и жмакать. Яж грил, это самое простое что можно.
yum тебе сделал собственный счетчик, кот. зависит от количества этих кнопок(показать еще) на данной странице. Кликает их столько раз, сколько найдет, через интервал.  "Скорость" тут непричем  ;-) ее вообще нет. Разные способы прост.
да, 1000 это задержка = ~1сек.

Привет всем!
Господа, администрация одного хорошего сайта (закрытый трекер на базе TorrentPier II старой версии) удалила поддержку youtube в сообщениях на форуме.
К сожалению, не обладаю знаниями JavaScript и вся надежда только на Вас. Был бы признателен любой помощи. Помогите пожалуйста выполнить следующую задачу.
Необходимо заменять ссылки вида https://youtu.be/Bkq1PAyGuZY на HTML код плеера(фрейма). Ссылки движок трекера оборачивает в следующий код:

Выделить код

Код:

<div class="post_wrap">содержимое сообщения<br /><a href="https://youtu.be/Bkq1PAyGuZY" class="postLink">https://youtu.be/Bkq1PAyGuZY</a></div>

HTML код "плеера" (взял с YouTube)

Выделить код

Код:

<iframe src="https://www.youtube.com/embed/Bkq1PAyGuZY?ecver=2" width="640" height="360" frameborder="0" allowfullscreen></iframe>

В сети есть множество примеров, но без знаний JS применить их не получилось. Выручайте :whiteflag:

Sality
Как-то так:

Выделить код

Код:

var player, i, link, links = document.getElementsByClassName("postLink");
for (i = links.length-1; i >= 0; i--) {
  link = links[i];
  if ((link.nodename == "A") || (link.hostname == "youtu.be") || (link.hostname == "youtube.com") || (link.hostname == "www.youtube.com")) {
    player = document.createElement("iframe");
    player.src = "https://www.youtube.com/embed" + link.pathname + "?ecver=2";
    player.width = 640;
    player.height = 360;
    player.frameBorder = 0;
    player.allowFullscreen = true;
    link.parentElement.replaceChild(player, link);
  }
}
yup пишет

Sality
Как-то так:

Выделить код

Код:

var player, i, link, links = document.getElementsByClassName("postLink");
for (i = links.length-1; i >= 0; i--) {
  link = links[i];
  if ((link.nodename == "A") || (link.hostname == "youtu.be") || (link.hostname == "youtube.com") || (link.hostname == "www.youtube.com")) {
    player = document.createElement("iframe");
    player.src = "https://www.youtube.com/embed" + link.pathname + "?ecver=2";
    player.width = 640;
    player.height = 360;
    player.frameBorder = 0;
    player.allowFullscreen = true;
    link.parentElement.replaceChild(player, link);
  }
}

Большое Вам человеческое спасибо! Очень выручили :)

Выделить код

Код:

|| (link.hostname == "youtube.com") || (link.hostname == "www.youtube.com")

Этот часть кода вырезал, чтобы затрагивался только youtu.be. Ссылки вида *.youtube.com обрабатываются некорректно, но они и не нужны.
Написал это для тех, кто будет использовать этот код.

Еще раз благодарствую, настроение подняли :)

Еще раз попрошу. Нужно разворачивать всё комментарии на dirty (показать комментарии от ....).

8scuWA9.png


P.S. Заранее огромное спасибо.

И совсем главная хотелка. :)

rutracker блокирует фреймы и получается что невозможно пользоваться RSS ридером — NewsFox.
Как бы заблокировать эту проверку?

N5EmLIi.png

leshiy_odessa пишет

Нужно разворачивать всё комментарии на dirty (показать комментарии от ....).

Например, так:

Выделить код

Код:

// ==UserScript==
// @name        d3
// @namespace   comments
// @include     https://gif.d3.ru/*
// @include     http://gif.d3.ru/*
// @version     1
// @run-at      document-idle
// @grant       none
// ==/UserScript==
function ClickComment() {
  var i, links = document.getElementsByClassName('b-comment__expand-button');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ClickComment, 1000);
}
setTimeout(ClickComment, 1);

27-03-2017 04:27:38

leshiy_odessa пишет

Как бы заблокировать эту проверку?

Проверка там такая:

Выделить код

Код:

if ( top != self && !self.location.hostname.match(BB.allowed_translator_hosts) ) {
  $(function() {
    $('body').html('<center><h1><br><br>Похоже вас пытаются обмануть<br>frame\'s hostname: ' + self.location.hostname + '</h1></center>');
    throw new Error('in frame');
  });
}

BB.allowed_translator_hosts - это регулярное выражение /^(translate\.googleusercontent\.com)$/
Если туда засунуть что-то другое, то проверку можно обломать.
Но вот вопрос: а когда скрипт Greasemonkey запускать? Делать это до скриптов страницы смысла нет, так как то значение переменной страничный скрипт присваивает, и он просто затрёт наше значение. А после скриптов страницы уже поздно - показ во фрейме к этому времени будет обнаружен и заблокирован.
Разве что переменной self присвоить top... Но неизвестно, что при этом поломается. Пробовать надо.

Выделить код

Код:

// ==UserScript==
// @name        rutrackerRSS
// @namespace   rutrackerRSS
// @include     https://rutracker.org/*
// @include     http://rutracker.org/*
// @version     1
// @run-at      document-start
// @grant       none
// ==/UserScript==
window.self = window.top;

yup
Ааааа.... Дай я тебя расцелую :) НУ всё прямо в точку. rutrackerRSS заработал сразу. Это же #$&$% сколько я с ним мучался и пытался решить проблему самостоятельно.

Только d3 я поправил домены на — *.d3.ru/* Никак не могу понять зачем там setTimeout = 1000мс. Для перестраховки?

P.S. Спасибо всем за помощь. В ответ могу только отблагодарить своими знаниями в железе (любой глюк железа). Любой вопрос по выбору или настройке роутера пишите в личку.

leshiy_odessa пишет

Только d3 я поправил домены на — *.d3.ru/* Никак не могу понять зачем там setTimeout = 1000мс. Для перестраховки?

Да. Эксперимент показал, что ссылки на ответы там не присутствуют на страничке изначально, а добавляются - скриптами странички - уже после того, как она получена, из-за чего даже @run-at document-idle не помогает. Нужно ждать, пока ссылки добавятся, и только потом их раскрывать.
Можно, конечно, просто выждать какое-то предопределённое время, например, две или три секунды (одной иногда было мало, проверял), и разово запустить процесс разворачивания ответов, но нет гарантии, что к этому времени добавление закончится (мало ли из-за чего оно застопорится...). Приходится тупо делать это раз в секунду всё время, пока страничка открыта - это и ждать начала процесса разворачивания ответов не очень долго, и в то же время браузер не очень грузит.
(Со ссылками в поисковой выдачей Google та же история, и до сих пор лучшего решения не нашлось.)

yup
Я тут конечно погарячкувал, решил сделать самостоятельно по аналогии разворачивания спойлеров в комментах youtube и обнаружил, что на d3.ru class называется не "b-comment__expand-button", а "b-comment__expand-button-container". Исправил в скрипте и он продолжает работать. Отсюда вопрос. Это джава скрипту пофигу, он ищет по началу имени или это у вас какой то другой хитрый способ, что вы нашли этот класс?

update Таки у меня получилось сделать по аналогии для youtube. Теперь красота.

Выделить код

Код:

// ==UserScript==
// @name        Youtube comments open spoiler
// @namespace   comments
// @include     https://youtube.com/*
// @include     http://youtube.com/*
// @include     https://www.youtube.com/*
// @include     http://www.youtube.com/*
// @version     1
// @run-at      document-idle
// @grant       none
// ==/UserScript==
function ClickComment() {
  var i, links = document.getElementsByClassName('yt-uix-button yt-uix-button-size-default yt-uix-button-link');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ClickComment, 1000);
}
setTimeout(ClickComment, 1);
Выделить код

Код:

/* --- Скрыть ответы --- */  
.yt-uix-expander-head.comment-replies-renderer-expander-up.comment-replies-renderer-hide,
/* --- Свернуть --- */
.yt-uix-button.yt-uix-button-size-default.yt-uix-button-link
{display:none !important}

update2 Пошли какие то подтормаживания. Походу я словил какой непрерывный цикл.

leshiy_odessa пишет

обнаружил, что на d3.ru class называется не "b-comment__expand-button", а "b-comment__expand-button-container".

Нет. Класс ссылки - именно "b-comment__expand-button". А "b-comment__expand-button-container" - класс того <div>, в который эта ссылка вложена.

leshiy_odessa пишет

Исправил в скрипте и он продолжает работать.

Что этот <div> на click() реагирует - ну, значит, создатели странички на него обработчик этого события навесили. Можно считать это случайностью и рассчитывать на подобное в других местах не стоит.

leshiy_odessa пишет

Это джава скрипту пофигу, он ищет по началу имени или это у вас какой то другой хитрый способ, что вы нашли этот класс?

Функция getElementsByClassName() ищет по точному имени (точнее - по полному набору заданных имён).
А я класс ссылки нашёл элементарно - посмотрел с помощью Firebug в дереве DOM.

leshiy_odessa пишет

Пошли какие то подтормаживания. Походу я словил какой непрерывный цикл.

1. YouTube и так неторопливый сайт. И если подгружать сразу кучу новых сообщений, да ещё одновременно с просмотром видео, то тормозов надо ожидать изначально.
2. Почему такой странный набор классов? У кнопки на подгрузку сообщений классы: "yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more comment-replies-renderer-paginator comment-replies-renderer-expander-down yt-uix-button-link", и на тестовой страничке, где я это посмотрел, таких объектов находится в 10 раз меньше, чем по тому урезанному набору, который использован в коде скрипта.
3. Бесконечный цикл реализован в самом скрипте - один проход в секунду. Но в отличие от кнопок подгрузки сообщений, которые исчезают после клацания, те объекты, которые получает нынешний код, никуда не деваются, и их много, так что время на них тратится на каждом проходе. Хотя я не думаю, что эта задержка будет как-то заметна.

yup пишет

1. YouTube и так неторопливый сайт. И если подгружать сразу кучу новых сообщений, да ещё одновременно с просмотром видео, то тормозов надо ожидать изначально.

Я двигаю за ползунок и как бы спотыкаюсь/зависаю. То есть что то оно там делает уже после того как все комментарии развернуты.

update Подвисоны пропали, когда сделал двойной код: разворачивание комментариев + подгрузка других страниц — "Показать ещё". А когда вернул разворачивания спойлеров, то микро зависонны вернулись. Загадка.

yup пишет

2. Почему такой странный набор классов? У кнопки на подгрузку сообщений классы: "yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more comment-replies-renderer-paginator comment-replies-renderer-expander-down yt-uix-button-link", и на тестовой страничке, где я это посмотрел, таких объектов находится в 10 раз меньше, чем по тому урезанному набору, который использован в коде скрипта.

Если быть точнее то у меня класс такой — yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more comment-section-renderer-paginator yt-uix-sessionlink.
Но не суть, потому что речь идет не про подгрузку комментариев, а про разворачивании спойлеров. Но идею воспринял, возможно оставлю. Но тогда браузер точно рухнет от количества комментариев на некоторых видео.

Проблема вырисовывается. НА ютубе два вида спойлеров :

1. "Читать дальше" — yt-uix-button yt-uix-button-size-default yt-uix-button-link
2. "Показать ответы" — yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more comment-replies-renderer-paginator comment-replies-renderer-expander-down yt-uix-button-link

Если поставить первый, то всё спойлеры открываются, но идут подзависоны.
Если поставить одновременно, то первый спойлер ("Читать дальше") не срабатывает, второй работает и исчезают подзависоны.
Если их поменять местами, первым в скрипте поставить "Показать ответы", то всё срабатывает, но зависоны еще жестче.

leshiy_odessa пишет

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

Как-то так получилось, что на тех страничках, на которые я заглядывал в процессе нашего обсуждения, таких штуковин просто не было. Сейчас вот только впервые наткнулся.

Кнопки с набором классов "yt-uix-button yt-uix-button-size-default yt-uix-button-link" после нажатия не исчезают. И классы их не меняются. Просто на самом деле у каждого комментария есть две такие кнопки: "Читать дальше" и "Спрятать". И либо они обе невидимые (если комментарий короткий), либо видна только одна из них. При нажатии на видимую кнопку она становится невидимой, а другая - видимой.
А скрипт, в его нынешнем состоянии, тупо жмёт на все подряд раз в секунду.

Вот такой вариант предлагаю попробовать:

Выделить код

Код:

// ==UserScript==
// @name        Youtube comments open spoiler
// @namespace   comments
// @include     https://youtube.com/*
// @include     http://youtube.com/*
// @include     https://www.youtube.com/*
// @include     http://www.youtube.com/*
// @version     2
// @run-at      document-idle
// @grant       none
// ==/UserScript==
function ExpandComments() {
  var i, links = document.getElementsByClassName("comment-text-toggle-link read-more");
  for (i = links.length-1; i >= 0; i--) if (links[i].className != "comment-text-toggle-link read-more hid") links[i].click();
  setTimeout(ExpandComments, 1000);
}
setTimeout(ExpandComments, 1);
leshiy_odessa пишет

Я двигаю за ползунок и как бы спотыкаюсь/зависаю. То есть что то оно там делает уже после того как все комментарии развернуты.

Я выхожу в Интернет с ноутбука с довольно маленьким экраном. На страничках YouTube в него помещается только окошко видеоролика и его название. Даже чтобы описание посмотреть - нужно ползунок вниз тянуть.
Но описание после прокрутки видно сразу, а комментарии, которые под ним расположены, - нет. Вместо них только надпись "Подождите". Комментарии на её месте появляются секунды через 3-4.
А когда вниз комментарии протягиваю, то по индикатору на вкладке видно, что браузер периодически ещё что-то из Интернета подтягивает.
И всё это - естественное поведение YouTube, без вмешательства каких-либо сторонних скриптов.

yup пишет

Вот такой вариант предлагаю попробовать:

Вы забыли что два вида спойлера ( "Читать дальше" и "Показать ответы"). Два часа пытался их объединить. Один раз даже получилось, но появлялся глюк с вечным нажатием по не заданному классу. Прошу помощи.

update Прошла минута от ответа и у меня вышло. Чувствую себя индийским программистов копи пастой.


скрытый текст

Выделить код

Код:

/*
https://forum.mozilla-russia.org/viewtopic.php?pid=733851#p733851
*/
// ==UserScript==
// @name        Youtube comments open spoiler
// @namespace   comments
// @include     https://youtube.com/*
// @include     http://youtube.com/*
// @include     https://www.youtube.com/*
// @include     http://www.youtube.com/*
// @version     1
// @run-at      document-end
// @grant       none
// ==/UserScript==


/* ----- "Читать дальше"  ----- */
function ExpandComments() {
  var i, links = document.getElementsByClassName("comment-text-toggle-link read-more");
  for (i = links.length-1; i >= 0; i--) if (links[i].className != "comment-text-toggle-link read-more hid") links[i].click();


/* ----- "Показать ответы"  ----- */
  var i, links = document.getElementsByClassName("comment-replies-renderer-paginator");
  for (i = links.length-1; i >= 0; i--) if (links[i].className != "yt-uix-expander-head") links[i].click();
  setTimeout(ExpandComments, 1000);
}
setTimeout(ExpandComments, 1);

/* ПОДГРУЗКА ОСТАЛЬНЫХ КОММЕНТАРИЕВ — "Показать ещё". Если много комментариев, то выжирает всю память.
function ClickComment() {
  var i, links = document.getElementsByClassName('yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more comment-section-renderer-paginator yt-uix-sessionlink');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ClickComment, 1000);
}
setTimeout(ClickComment, 1);*/


Интересно а Java скриптом можно сделать такое? Скрыть классы.

.comment-replies-renderer-hide,
.comment-text-toggle-link.show-less
{display:none !important}


yup пишет

А скрипт, в его нынешнем состоянии, тупо жмёт на все подряд раз в секунду.

Я это понял и пытался ночью переделать предыдущий ваш срипт.

update2 и тут до меня как до жирафа дошло, что нужно было переименовать вторую function  xpandComments() на function ExpandComments2(). Ну я и тупой. :(

leshiy_odessa пишет

Вы забыли что два вида спойлера ( "Читать дальше" и "Показать ответы").

Нет, не забыл. Просто это достаточно независимые операции, а объединённого кода я не видел, поэтому не стал заниматься самодеятельностью и предложил только код по той проблеме, которая непосредственно обсуждалась.

leshiy_odessa пишет

Интересно а Java скриптом можно сделать такое? Скрыть классы.

.comment-replies-renderer-hide,
.comment-text-toggle-link.show-less
{display:none !important}

Из JavaScript можно создавать новые стили, но доступ к существующим стилям есть только на чтение. Поэтому вариантов имеется два:
1. Создать в стилях новый класс с параметром "display:none" и назначить его всем скрываемым элементам.
2. Получить список всех элементов нужного класса и присвоить им  "display:none":

Выделить код

Код:

var i, elems = document.getElementsByClassName("comment-replies-renderer-hide");
for (i = elems.length-1; i >= 0; i--) elems[i].style.display = false;

Но через userContent.css оно как-то красивее и эффективнее.

yup пишет

2. Получить список всех элементов нужного класса и присвоить им  "display:none":

Я думал вы ошиблись с display = false, помозговал пол часа и вспомнил, что видел hide или none, потом потратил еще минут десять на кавычки. В итоге таки родил — for (i = elems.length-1; i >= 0; i--) elems[i].style.display = "none";
Начинаю писать вам ответ, нажимаю цитировать и вижу — none :)

Огромное вам спасибо за помощь и науку.

скрытый текст

Выделить код

Код:

/*
https://forum.mozilla-russia.org/viewtopic.php?pid=733851#p733851
*/
// ==UserScript==
// @name        Youtube comments open spoiler
// @namespace   comments
// @include     https://youtube.com/*
// @include     http://youtube.com/*
// @include     https://www.youtube.com/*
// @include     http://www.youtube.com/*
// @version     1
// @run-at      document-end
// @grant       none
// ==/UserScript==


/* ----- "Читать дальше"  ----- */
function ExpandComments() {
  var i, links = document.getElementsByClassName("comment-text-toggle-link read-more");
  for (i = links.length-1; i >= 0; i--) if (links[i].className != "comment-text-toggle-link read-more hid") links[i].click();

/* ----- "Показать ответы"  ----- */
  var i, links = document.getElementsByClassName("comment-replies-renderer-paginator");
  for (i = links.length-1; i >= 0; i--) if (links[i].className != "yt-uix-expander-head") links[i].click();
  setTimeout(ExpandComments, 1000);
}
setTimeout(ExpandComments, 1);

function HideClass() {
/* --- УБРАЛ КНОПКУ "Скрыть ответы" --- */
var i, elems = document.getElementsByClassName("comment-replies-renderer-hide");
for (i = elems.length-1; i >= 0; i--) elems[i].style.display = "none";
/* --- УБРАЛ КНОПКУ "Свернуть" --- */
var i, elems = document.getElementsByClassName("comment-text-toggle-link show-less");
for (i = elems.length-1; i >= 0; i--) elems[i].style.display = "none";
setTimeout(HideClass, 1000);
}
setTimeout(HideClass, 1);

/* ПОДГРУЗКА ОСТАЛЬНЫХ КОММЕНТАРИЕВ — "Показать ещё". Если много комментариев, то выжирает всю память.
function ClickComment() {
  var i, links = document.getElementsByClassName('yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more comment-section-renderer-paginator yt-uix-sessionlink');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ClickComment, 1000);
}
setTimeout(ClickComment, 1);*/

Перейдя с Opera столкнулся с непоняткой. На rutracker.org и на некоторых других сайтах во время перехода с одной страницы на другую появляется сообщение ''Документ просрочен этот документ более не доступен.Чтобы отобразить эту страницу, Pale Moon должен отправить информацию...''и тд.Может кто нибудь, если это возможно сможет написать скрипт (или может такой существует) который бы сразу перебрасывал на заданную страницу.Или  есть другой способ.Помогите разрулить ситуацию.

Rag пишет

'Документ просрочен этот документ более не доступен.Чтобы отобразить эту страницу, Pale Moon должен отправить информацию...''

Может быть Вы доигрались с параметром browser.cache.check_doc_frequency и кэш отключен ?

Rag пишет

Может кто нибудь, если это возможно сможет написать скрипт (или может такой существует) который бы сразу перебрасывал на заданную страницу.

Скриптами Custom Buttons или userChrome.js такое можно было бы сделать. Но через Greasemonkey - нельзя.

Rag пишет

Или  есть другой способ.Помогите разрулить ситуацию.

Чтобы запросы не выдавались, нужно разрешить кеширование страниц и/или увеличить их "срок жизни". Эти параметры передаются сервером в http-заголовках страницы.
Самый простой способ вмешаться и изменить в них что-то - дополнение Modify Response Headers.
Но там, похоже, заголовки меняются всегда, для всех сайтов. Делать это выборочно может гораздо более навороченное дополнение moz-rewrite того же автора, существующее в двух вариантах: Rewrite HTTP Headers (JSON) и Rewrite HTTP Headers (JS)

09-04-2017 02:01:11
Хм... Подумал: можно попробовать сделать скрипт, автоматически нажимающий кнопку повторной отправки запроса.

yup пишет:
Хм... Подумал можно попробовать сделать скрипт, автоматически нажимающий кнопку повторной отправки запроса.

Спасибо что откликнулись,если вы сможете сделать такой скрипт было бы просто отлично, я в этих делах-Валенок.С CB кнопками и Greasemonkey столкнулся совсем недавно.А на счёт кеширования я так понимаю вы имеете в виду browser.cache.disk_cache_ssl оно у меня true а вот как увеличить их ''срок жизни''я честно говоря не знаю.И мне кажется это не поможет В сообщениях говорится-''В целях безопасности Pale Moon не производит автоматический повторный запрос важных документов''. Ну а дополнения не хотелось бы ставить.Хотя конечно попробую.

Rag пишет

если вы сможете сделать такой скрипт было бы просто отлично,

В принципе - могу. И даже попытался, когда свой ответ писал. Но пока никак не удаётся получить то самое сообщение от браузера с кнопкой повторной отправки - ни на одном из сайтов.

Rag пишет

А на счёт кеширования я так понимаю вы имеете в виду browser.cache.disk_cache_ssl оно у меня true а вот как увеличить их ''срок жизни''я честно говоря не знаю.

Нет, я говорил о параметрах кеширования, которые сервер передаёт браузеру в заголовке своего ответа. Там и запрет кеширования может быть прописан, и время хранения странички в кеше. Указанные дополнения позволяют подменять эти параметры до того, как браузер их прочитает.

Rag пишет

И мне кажется это не поможет В сообщениях говорится-''В целях безопасности Pale Moon не производит автоматический повторный запрос важных документов''.

Должно помочь. Повторный запрос потому и нужен, что странички в кеше нет.

Rag пишет

Ну а дополнения не хотелось бы ставить.Хотя конечно попробую.

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

Попробовал я Rewrite HTTP Headers (JSON) и Rewrite HTTP Headers (JS) нечего не изменилось. Тут мне кажется два варианта или их нужно както подстроить или другое, Palemoon отличный браузер но у него есть очень нехорошая черта, установив дополнения не всегда понятно работает ли оно.Так что может эти дополнения и хорошие но у PM с ними не совместимость или чтото другое.

Но пока никак не удаётся получить то самое сообщение от браузера с кнопкой повторной отправки - ни на одном из сайтов.

На SeaMonkey этого может и не получится.Я пробовал на Firefox-45.8.0 и 52.0.1 там всё открывается.И что там разрабы нашаманили такого чего нет в PM неизвестно.

Rag пишет

или их нужно както подстроить

Ещё как надо! Rewrite HTTP Headers - это как Custom Buttons или Greasemonkey: само по себе, без дополнительного "программирования", не делает ничего.
Причём настройка делается не в браузере, а сочинением специального текстового файла. Его описание находится в README.md в архиве самого дополнения, и оно же помещено на страничку AMO, откуда дополнение скачивается.

Rag пишет

На SeaMonkey этого может и не получится.

Но я же его периодически вижу. Нечасто, но вижу. Осталось дождаться следующего раза.

yup пишет:
Ещё как надо!

Для меня это сложновато.:angry:

Rag пишет

если вы сможете сделать такой скрипт было бы просто отлично

Попробуем вслепую:

Выделить код

Код:

// ==UserScript==
// @name        ReSend
// @namespace   ReSend
// @include     https://rutracker.org/*
// @version     1
// @grant       none
// ==/UserScript==
document.getElementById("errorTryAgain").click();

yup пишет:
Попробуем вслепую

Не прокатило.Ни чего не изменилось

Rag пишет

Не прокатило.Ни чего не изменилось

Опечатка у меня там была в "@include". Изменил предыдущее сообщение.

yup пишет:
Опечатка у меня там была в @include. Изменил предыдущее сообщение.

Извините мою дремучесть,но я не понял последнее ваше сообщение.

В первом варианте текста скрипта я допустил опечатку в одной из строк. Сейчас там уже исправленный вариант.

После включения скрипта изменилась очерёдность сообщений.Было два сообщения ''Документ просрочен''попробовать снова и ''Подтверждение''отправить заново.А теперь они выскакивают сразу оба.

09-04-2017 08:04:28
yup
Если вы захотите продолжить эксперименты с этим скриптом (в чём  я надеюсь) то я буду на форуме после 22.00 Спасибо.

Rag
Отключите скрипт и поочерёдно на обеих кнопках вызовите пункт меню "Исследовать элемент". Интересуют id кнопок.

yup пишет:

Отключите скрипт и поочерёдно на обеих кнопках вызовите пункт меню ''Исследовать элемент''. Интересуют id кнопок.

1 кнопка ''Попробовать снова''  id=errorTryAgain
2 кнопка ''Отправить заново'' не вызывается меню,так что ничего я не увидел.
С помощью cb кнопки Attributes Inspector увидел только id самого сообщения.- id=commonDialog

Rag пишет

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

Ладно, попробуем обойтись.

Выделить код

Код:

// ==UserScript==
// @name        ReSend
// @namespace   ReSend
// @include     https://rutracker.org/*
// @version     2
// @grant       none
// ==/UserScript==
function ClickButton2() {
  var Buttons = document.getElementsByTagName("button");
  if (Buttons != undefined) Buttons[0].click();
  else if (window.c_o_u_n_t-- > 0) setTimeout(ClickButton2, 100);
};
var Button1 = document.getElementById("errorTryAgain");
if (Button1 == undefined) return;
Button1.click();
window.c_o_u_n_t = 5;
setTimeout(ClickButton2, 100);

yup пишет:
Ладно, попробуем обойтись

Без изменений.Выскакивают сразу оба сообщения,единственно что меньше жмакать на кнопки.
И вопрос не по теме.Для не опытного.Как на форум отправить сообщение с анимацией?

Rag пишет

Выскакивают сразу оба сообщения

Как это понимать? Оба сообщения на одной странице?

Rag пишет

единственно что меньше жмакать на кнопки.

То есть, кнопки нажимаются сами? Так в этом и состоит назначение скрипта.

Rag пишет

Как на форум отправить сообщение с анимацией?

А что это такое? Сообщение с анимированным изображением?

yup
Без скрипта появлялось сообщение с кнопкой,после нажатия на которую вылазило окошко с кнопкой для  подтверждения действия. А со скриптом не нужно жать на кнопку сообщения. Появляется сразу сообщение и окошко для подтверждения.Может я ни правильно объясняю но как могу вы уж извините.Сообщение с анимацией gif открыл спойлер а там типа видео ну чтоб наглядней было видно.Ну как то так.

10-04-2017 03:02:51
yup
Получается так что скрипт нажимает кнопку сообщения,а вот на кнопку в окошке нужно нажимать самому.В общем я вас запутал ''Выскакивают сразу оба сообщения''- сообщение и окошко.

Rag пишет

Получается так что скрипт нажимает кнопку сообщения,а вот на кнопку в окошке нужно нажимать самому.

Осталось разобраться, почему не нажимает вторую кнопку. Для эксперимента попробуйте вот такой вариант:

Выделить код

Код:

// ==UserScript==
// @name        ReSend
// @namespace   ReSend
// @include     https://rutracker.org/*
// @version     2.99
// @grant       none
// ==/UserScript==
function ClickButton2() {
  document.getElementsByTagName("button")[0].click();
};
var Button1 = document.getElementById("errorTryAgain");
if (Button1 == undefined) return;
Button1.click();
setTimeout(ClickButton2, 1000);

yup пишет:
Осталось разобраться, почему не нажимает вторую кнопку. Для эксперимента попробуйте вот такой вариант

Ничего не изменилось.Аналогично как с прошлым скриптом.

Rag
Когда на экране будет вторая кнопка, нажмите Ctrl-Shift-C - внизу окна появится отладчик. В нём левее слова "Инспектор" будет квадратик со стрелкой, указывающей в его середину. Нажмите на этот квадратик (он из чёрного станет синим), после чего нажмите мышкой на кнопку подтверждения. В результате внизу, в отладчике, в дереве объектов выделенная строка переместится на объект нашей сопротивляющейся кнопки. Щелкните по этой строке правой кнопкой мыши и выберите "Копировать" > "Внешний HTML". Скопированный текст выложите сюда.

yup пишет:
нажмите Ctrl-Shift-C

На Ctrl-Shift-C ни какой реакции,ничего не появляется.Я это уже как то пробовал ничего не вышло.

10-04-2017 04:05:37
yup
Не посчитайте за наглость. Вам не проще будит поставить такой же Palemoon чтоб самому быстрей разобратса как говоритса самому посчупать.Браузер портабл ни составит труда потом его удалить.
http://www.palemoon.org/palemoon-portable.shtml

Rag пишет

На Ctrl-Shift-C ни какой реакции,ничего не появляется.

Ctrl-Shift-C - это Инструменты > Веб-разработка > Инспектор

Rag пишет

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

Выкачал. Распаковал. Выкачал ещё раз, теперь уже версию 26.5, ибо нынешняя 27 под XP не запускается. Распаковал, запустил. Обнаружил, что практически никаких встроенных средств для разбирательства со страничками нет. Предлагают загружать дополнения для Firefox. Но Firebug браузер устанавливать не желает - говорит, что несовместим. Хорошо хоть, что DOM Inspector устанавливается и работает.
Но от того, что у меня теперь всё это есть пользы мало. Нужно же ещё знать, куда идти и что там делать, чтобы нужное сообщение получить. Давайте наоборот: установите себе DOM Inspector и вызовите его на страничке с той кнопкой (Tools > Web Developer > Dom Inspector). Когда его окошко появится, нажмите квадрат со стрелочкой в верхнем левом углу окна, потом ткнитесь мышкой в интересующую нас кнопку, вернитесь в окно DOM Inspector и из контекстного меню подсвеченной там строки выберите "Copy XML". То, что скопируется, вставьте в своё сообщение.

yup пишет/:

установите себе DOM Inspector и вызовите его на страничке с той кнопкой

Установил.
DOM Inspector вызывается только на сообщении ''Документ просрочен''с кнопкой ''Попробовать снова.''А вот на нужном окошке ''Подтверждение'' с кнопкой ''Отправить заново''не вызывается.

выберите Copy XML. То, что скопируется, вставьте в своё сообщение.

Скопировал ''Документ просрочен''с кнопкой ''Попробовать снова.''Может это как то поможет.

скрытый текст
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html [
  <!ENTITY % htmlDTD
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "DTD/xhtml1-strict.dtd">
  %htmlDTD;
  <!ENTITY % netErrorDTD
    SYSTEM "chrome://global/locale/netError.dtd">
  %netErrorDTD;

<!ENTITY loadError.label "Проблема при загрузке страницы">
<!ENTITY retry.label "Попробовать снова">

<!-- Specific error messages -->

<!ENTITY connectionFailure.title "Попытка соединения не удалась">
<!ENTITY connectionFailure.longDesc "&sharedLongDesc;">

<!ENTITY deniedPortAccess.title "Обращение к данному адресу заблокировано">
<!ENTITY deniedPortAccess.longDesc "<p>Для запрошенного адреса указан порт (пример: <q>palemoon.org:25</q> это порт 25 на сайте palemoon.org) который, как правило, <em>не используется</em> для работы с веб-сайтами. В целях безопасности браузер отменил данный запрос.</p>">

<!ENTITY dnsNotFound.title "Сервер не найден">
<!ENTITY dnsNotFound.longDesc "
<ul>
  <li>Проверьте, не допущена ли ошибка при наборе адреса, например, <strong>ww</strong>.example.com вместо <strong>www</strong>.example.com</li>
  <li>Если ни одна страница не загружается – проверьте настройки соединения с Интернетом.</li>
  <li>Если компьютер или сеть защищены межсетевым экраном или прокси-сервером – убедитесь, что &brandShortName; разрешён выход в Интернет.</li>
</ul>
">

<!ENTITY fileNotFound.title "Файл не найден">
<!ENTITY fileNotFound.longDesc "
<ul>
   <li>Проверьте правильность введённого имени файла, соответствие регистра и отсутствие других ошибок в имени файла.</li>
   <li>Проверьте, не был ли файл переименован, удалён или перемещён.</li>
</ul>">


<!ENTITY generic.title "Ой.">
<!ENTITY generic.longDesc "
<p>&brandShortName; не может загрузить эту страницу по какой-то причине.</p>
">

<!ENTITY malformedURI.title "Некорректный адрес">
<!ENTITY malformedURI.longDesc "
<ul>
  <li>Адреса веб-сайтов обычно записываются в формате <strong>http://www.example.com/</strong></li>
  <li>Убедитесь, что вы используете в качестве разделителя прямую косую черту (т.е. <strong>/</strong>).</li>
</ul>
">

<!ENTITY netInterrupt.title "Соединение было прервано">
<!ENTITY netInterrupt.longDesc "&sharedLongDesc;">

<!ENTITY notCached.title "Документ просрочен">
<!ENTITY notCached.longDesc "<p>Запрошенный документ не доступен в кэше &brandShortName;.</p><ul><li>В целях безопасности &brandShortName; не производит автоматический повторный запрос важных документов.</li><li>Нажмите «Попробовать снова», чтобы повторно запросить документ с веб-сайта.</li></ul>">

<!ENTITY netOffline.title "Автономный режим">
<!ENTITY netOffline.longDesc2 "
<ul>
   <li>Нажмите «Попробовать снова», чтобы подключиться к сети и перезагрузить страницу.</li>
</ul> ">

<!ENTITY contentEncodingError.title "Ошибка в типе содержимого">
<!ENTITY contentEncodingError.longDesc "

<ul>
   <li>Пожалуйста, свяжитесь с владельцами веб-сайта и проинформируйте их об этой проблеме.</li>
</ul> ">

<!ENTITY unsafeContentType.title "Небезопасный тип файла">
<!ENTITY unsafeContentType.longDesc "
<ul>
  <li>Пожалуйста, свяжитесь с владельцами веб-сайта и проинформируйте их о этой проблеме.</li>
</ul>
">

<!ENTITY netReset.title "Соединение было сброшено">
<!ENTITY netReset.longDesc "&sharedLongDesc;">

<!ENTITY netTimeout.title "Время соединения истекло">
<!ENTITY netTimeout.longDesc "&sharedLongDesc;">

<!ENTITY unknownProtocolFound.title "Неизвестный тип адреса">
<!ENTITY unknownProtocolFound.longDesc "
<ul>
  <li>Для открытия данного адреса вам, возможно, понадобится установить стороннее программное обеспечение.</li>
</ul>
">

<!ENTITY proxyConnectFailure.title "Прокси-сервер отказывается принимать соединения">
<!ENTITY proxyConnectFailure.longDesc "
<ul>
  <li>Проверьте настройки прокси-сервера и убедитесь, что они верны.</li>
  <li>Свяжитесь с вашим системным администратором и убедитесь, что прокси-сервер работает.</li>
</ul>
">

<!ENTITY proxyResolveFailure.title "Не удалось найти прокси-сервер">
<!ENTITY proxyResolveFailure.longDesc "
<ul>
  <li>Проверьте правильность установленных настроек прокси-сервера.</li>
  <li>Проверьте работу соединения вашего компьютера с сетью.</li>
  <li>Если ваш компьютер или сеть защищены межсетевым экраном или прокси-сервером – убедитесь, что &brandShortName; разрешён выход в Интернет.</li>
</ul>
">

<!ENTITY redirectLoop.title "Неверное перенаправление на странице">
<!ENTITY redirectLoop.longDesc "
<ul>
   <li>Эта проблема может возникать при отключении или запрещении принятия кук.</li>
</ul> ">

<!ENTITY unknownSocketType.title "Неизвестный/неопознанный ответ сервера">
<!ENTITY unknownSocketType.longDesc "
<ul>
  <li>Убедитесь, что в вашей системе установлен «Менеджер личной защиты (PSM)».</li>
  <li>Возможно, это произошло из-за нестандартной конфигурации сервера.</li>
</ul>
">

<!ENTITY nssFailure2.title "Ошибка при установлении защищённого соединения">
<!ENTITY nssFailure2.longDesc2 "
<ul>
  <li>Страница, которую вы пытаетесь просмотреть, не может быть отображена, так как достоверность полученных данных не может быть проверена.</li>
  <li>Пожалуйста, свяжитесь с владельцами веб-сайта и проинформируйте их об этой проблеме.</li>
</ul>
">

<!ENTITY nssBadCert.title "Ошибка при установлении защищённого соединения">
<!ENTITY nssBadCert.longDesc2 "<ul>
<li>Это может быть проблемой с конфигурацией сервера или же кто-то пытается подменить нужный вам сервер другим.</li>
<li>Если в прошлом вы успешно соединялись с этим сервером, то, возможно, эта ошибка является временной. Попробуйте зайти позже.</li>
</ul>">

<!ENTITY sharedLongDesc "
<ul>
<li>Возможно, сайт временно недоступен, в этом случае подождите некоторое время и попробуйте снова.</li>
<li>Если вам не удалось открыть другие сайты, проверьте настройки соединения компьютера с сетью.</li>
<li>Если ваш компьютер или локальная сеть защищены межсетевым экраном или прокси-сервером, проверьте их, так как неверные настройки могут помешать просмотру веб-сайтов.</li>
</ul>
">

<!ENTITY malwareBlocked.title "Этот сайт подозревается в атаках на компьютеры!">
<!ENTITY malwareBlocked.longDesc "
<p>Сайты, атакующие компьютеры, пытаются установить программное обеспечение, которое похищает персональную информацию, вредит вашей системе или использует ваш компьютер для атак на другие компьютеры.</p>
<p>Владельцы веб-сайтов, которые считают, что их сайт попал в список «атакующих» по ошибке, могут <a href='https://www.stopbadware.org/request-review' >послать запрос на пересмотр этого решения</a>.</p>
">

<!ENTITY phishingBlocked.title "Этот сайт подозревается в мошенничестве!">
<!ENTITY phishingBlocked.longDesc "
<p>Ввод на этой странице любой личной информации может привести к её хищению или использованию в мошеннических целях.</p>
<p>Подобные типы веб-сайтов используются в мошенничествах, известных как фишинговые атаки,
при которых поддельные веб-страницы и почтовые сообщения используются для имитации источников, которым вы можете доверять.</p>
">

<!ENTITY cspBlocked.title "Заблокировано политикой защиты содержимого">
<!ENTITY cspBlocked.longDesc "<p>&brandShortName; заблокировал данный способ загрузки этой страницы, так как страница имеет политику защиты содержимого, которая это запрещает.</p>">

<!ENTITY xssBlockMode.title "Заблокировано XSS фильтром">
<!ENTITY xssBlockMode.longDesc "
<ul>
  <li>&brandShortName; заблокирован для дальнейших действий на этой странице, потому что это содержит внедренный код JavaScript.</li>
  <li>Загрузка этой странице была приостановлена из-за любой явной просьбы сайт,
  чтобы блокировать эту страницу в случае XSS атак, или потому, что &brandShortName;
  был настроен на блокирование страницы в этой ситуации.</li>
</ul>">

<!ENTITY corruptedContentError.title "Ошибка содержимого">
<!ENTITY corruptedContentError.longDesc "
<p>Страница, которую вы пытаетесь просмотреть, не может быть показана, так как была обнаружена ошибка при передаче данных.</p>
<ul>
<li>Пожалуйста, свяжитесь с владельцами веб-сайта и проинформируйте их об этой проблеме.</li>
</ul>">


<!ENTITY securityOverride.linkText "И вы можете добавить исключение…">
<!ENTITY securityOverride.getMeOutOfHereButton "Убраться отююда!">
<!ENTITY securityOverride.exceptionButtonLabel "Добавить исключение…">

<!-- LOCALIZATION NOTE (securityOverride.warningContent) - Do not translate the
contents of the <button> tags. It uses strings already defined above. The
button is included here (instead of netError.xhtml) because it exposes
functionality specific to firefox. -->

<!ENTITY securityOverride.warningContent "
<p>Вам не следует добавлять исключение, если вы используете соединение с Интернетом, которому не полностью доверяете или если вы обычно не видите предупреждения при соединении с этим сервером.</p>
<p>Если вы все же хотите добавить исключение для данного сайта, вы можете сделать это в дополнительных настройках шифрования.</p>

<button id='getMeOutOfHereButton'>&securityOverride.getMeOutOfHereButton;</button>
<button id='exceptionDialogButton'>&securityOverride.exceptionButtonLabel;</button>
">

<!ENTITY errorReporting.title "Сообщить об этой ошибке">
<!ENTITY errorReporting.longDesc "Отправка информации об адресе и сертификате для <span id='hostname'></span> поможет нам обнаружить и заблокировать вредоносные сайты. Спасибо, что помогаете нам создать более безопасный Интернет!">
<!ENTITY errorReporting.automatic "В будущем автоматически сообщать об ошибках">
<!ENTITY errorReporting.learnMore "Подробнее…">
<!ENTITY errorReporting.sending "Отправка сообщения">
<!ENTITY errorReporting.sent "Сообщение отправлено">
<!ENTITY errorReporting.report "Сообщить">
<!ENTITY errorReporting.tryAgain "Попробовать снова">

<!ENTITY remoteXUL.title "Удалённый XUL">
<!ENTITY remoteXUL.longDesc "<p><ul><li>Пожалуйста, свяжитесь с владельцами веб-сайта, чтобы проинформировать их об этой проблеме.</li></ul></p>">

<!ENTITY sslv3Used.title "Установка защищённого соединения не удалась">
<!-- LOCALIZATION NOTE (sslv3Used.longDesc) - Do not translate
     "ssl_error_unsupported_version". -->
<!ENTITY sslv3Used.longDesc "Дополнительная информация: ssl_error_unsupported_version">
<!ENTITY sslv3Used.learnMore "Подробнее…">

  <!ENTITY % globalDTD
    SYSTEM "chrome://global/locale/global.dtd">
  %globalDTD;
]>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
   - License, v. 2.0. If a copy of the MPL was not distributed with this
   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Проблема при загрузке страницы</title>
    <link rel="stylesheet" href="chrome://global/skin/netError.css" type="text/css" media="all" />
    <!-- If the location of the favicon is changed here, the FAVICON_ERRORPAGE_URL symbol in
         toolkit/components/places/src/nsFaviconService.h should be updated. -->
    <link rel="icon" type="image/png" id="favicon" href="chrome://global/skin/icons/warning-16.png" />

    <script type="application/javascript"><![CDATA[
      // Error url MUST be formatted like this:
      //   moz-neterror:page?e=error&u=url&d=desc
      //
      // or optionally, to specify an alternate CSS class to allow for
      // custom styling and favicon:
      //
      //   moz-neterror:page?e=error&u=url&s=classname&d=desc

      // Note that this file uses document.documentURI to get
      // the URL (with the format from above). This is because
      // document.location.href gets the current URI off the docshell,
      // which is the URL displayed in the location bar, i.e.
      // the URI that the user attempted to load.

      function getErrorCode()
      {
        var url = document.documentURI;
        var error = url.search(/e\=/);
        var duffUrl = url.search(/\&u\=/);
        return decodeURIComponent(url.slice(error + 2, duffUrl));
      }

      function getCSSClass()
      {
        var url = document.documentURI;
        var matches = url.match(/s\=([^&]+)\&/);
        // s is optional, if no match just return nothing
        if (!matches || matches.length < 2)
          return "";

        // parenthetical match is the second entry
        return decodeURIComponent(matches[1]);
      }

      function getDescription()
      {
        var url = document.documentURI;
        var desc = url.search(/d\=/);

        // desc == -1 if not found; if so, return an empty string
        // instead of what would turn out to be portions of the URI
        if (desc == -1)
          return "";

        return decodeURIComponent(url.slice(desc + 2));
      }

      function retryThis(buttonEl)
      {
        // Note: The application may wish to handle switching off "offline mode"
        // before this event handler runs, but using a capturing event handler.

        // Session history has the URL of the page that failed
        // to load, not the one of the error page. So, just call
        // reload(), which will also repost POST data correctly.
        try {
          location.reload();
        } catch (e) {
          // We probably tried to reload a URI that caused an exception to
          // occur;  e.g. a nonexistent file.
        }

        buttonEl.disabled = true;
      }

      function initPage()
      {
        var err = getErrorCode();
       
        // if it's an unknown error or there's no title or description
        // defined, get the generic message
        var errTitle = document.getElementById("et_" + err);
        var errDesc  = document.getElementById("ed_" + err);
        if (!errTitle || !errDesc)
        {
          errTitle = document.getElementById("et_generic");
          errDesc  = document.getElementById("ed_generic");
        }

        var title = document.getElementById("errorTitleText");
        if (title)
        {
          title.parentNode.replaceChild(errTitle, title);
          // change id to the replaced child's id so styling works
          errTitle.id = "errorTitleText";
        }

        var sd = document.getElementById("errorShortDescText");
        if (sd)
          sd.textContent = getDescription();

        var ld = document.getElementById("errorLongDesc");
        if (ld)
        {
          ld.parentNode.replaceChild(errDesc, ld);
          // change id to the replaced child's id so styling works
          errDesc.id = "errorLongDesc";
        }

        // remove undisplayed errors to avoid bug 39098
        var errContainer = document.getElementById("errorContainer");
        errContainer.parentNode.removeChild(errContainer);

        var className = getCSSClass();
        if (className && className != "expertBadCert") {
          // Associate a CSS class with the root of the page, if one was passed in,
          // to allow custom styling.
          // Not "expertBadCert" though, don't want to deal with the favicon
          document.documentElement.className = className;

          // Also, if they specified a CSS class, they must supply their own
          // favicon.  In order to trigger the browser to repaint though, we
          // need to remove/add the link element.
          var favicon = document.getElementById("favicon");
          var faviconParent = favicon.parentNode;
          faviconParent.removeChild(favicon);
          favicon.setAttribute("href", "chrome://global/skin/icons/" + className + "_favicon.png");
          faviconParent.appendChild(favicon);
        }
        if (className == "expertBadCert") {
          showSecuritySection();
        }

        if (err == "remoteXUL") {
          // Remove the "Try again" button for remote XUL errors given that
          // it is useless.
          document.getElementById("errorTryAgain").style.display = "none";
        }

        if (err == "cspBlocked") {
          // Remove the "Try again" button for CSP violations, since it's
          // almost certainly useless. (Bug 553180)
          document.getElementById("errorTryAgain").style.display = "none";
        }

        if (err == "nssBadCert") {
          // Remove the "Try again" button for security exceptions, since it's
          // almost certainly useless.
          document.getElementById("errorTryAgain").style.display = "none";
          document.getElementById("errorPageContainer").setAttribute("class", "certerror");
          addDomainErrorLink();
        }
        else {
          // Remove the override block for non-certificate errors.  CSS-hiding
          // isn't good enough here, because of bug 39098
          var secOverride = document.getElementById("securityOverrideDiv");
          secOverride.parentNode.removeChild(secOverride);
        }
      }
     
      function showSecuritySection() {
        // Swap link out, content in
        document.getElementById('securityOverrideContent').style.display = '';
        document.getElementById('securityOverrideLink').style.display = 'none';
      }
     
      /* In the case of SSL error pages about domain mismatch, see if
         we can hyperlink the user to the correct site.  We don't want
         to do this generically since it allows MitM attacks to redirect
         users to a site under attacker control, but in certain cases
         it is safe (and helpful!) to do so.  Bug 402210
      */
      function addDomainErrorLink() {
        // Rather than textContent, we need to treat description as HTML
        var sd = document.getElementById("errorShortDescText");
        if (sd) {
          var desc = getDescription();
         
          // sanitize description text - see bug 441169
         
          // First, find the index of the <a> tag we care about, being careful not to
          // use an over-greedy regex
          var re = /<a id="cert_domain_link" title="([^"]+)">/;
          var result = re.exec(desc);
          if(!result)
            return;
         
          // Remove sd's existing children
          sd.textContent = "";

          // Everything up to the link should be text content
          sd.appendChild(document.createTextNode(desc.slice(0, result.index)));
         
          // Now create the link itself
          var anchorEl = document.createElement("a");
          anchorEl.setAttribute("id", "cert_domain_link");
          anchorEl.setAttribute("title", result[1]);
          anchorEl.appendChild(document.createTextNode(result[1]));
          sd.appendChild(anchorEl);
         
          // Finally, append text for anything after the closing </a>
          sd.appendChild(document.createTextNode(desc.slice(desc.indexOf("</a>") + "</a>".length)));
        }

        var link = document.getElementById('cert_domain_link');
        if (!link)
          return;
       
        var okHost = link.getAttribute("title");
        var thisHost = document.location.hostname;
        var proto = document.location.protocol;

        // If okHost is a wildcard domain ("*.example.com") let's
        // use "www" instead.  "*.example.com" isn't going to
        // get anyone anywhere useful. bug 432491
        okHost = okHost.replace(/^\*\./, "www.");

        /* case #1:
         * example.com uses an invalid security certificate.
         *
         * The certificate is only valid for www.example.com
         *
         * Make sure to include the "." ahead of thisHost so that
         * a MitM attack on paypal.com doesn't hyperlink to "notpaypal.com"
         *
         * We'd normally just use a RegExp here except that we lack a
         * library function to escape them properly (bug 248062), and
         * domain names are famous for having '.' characters in them,
         * which would allow spurious and possibly hostile matches.
         */
        if (endsWith(okHost, "." + thisHost))
          link.href = proto + okHost;

        /* case #2:
         * browser.garage.maemo.org uses an invalid security certificate.
         *
         * The certificate is only valid for garage.maemo.org
         */
        if (endsWith(thisHost, "." + okHost))
          link.href = proto + okHost;
      }
     
      function endsWith(haystack, needle) {
        return haystack.slice(-needle.length) == needle;
      }

    ]]></script><style type="text/css">iframe[src="//rutrk.org/iframe/MG-2/MG-728x90-top.html"],
iframe[src="//rutrk.org/iframe/kadam-240x120-2.html"],
img[src="//openstat.net/i/87.gif?tc=c3c3c3"],
iframe[src="https://rutrk.org/iframe/MG-2/MG-bottom.html?rnd=408929460"],
img[src="//rutrk.org/240x800/0120_1.gif"],
img[src="//openstat.net/cnt?cid=3058772&amp;rnd=408929460"],
img[src="//counter.yadro.ru/hit?t16.2;rhttps%3A%2F%2Frutracker.org%2Fforum%2Findex.php;s1047*589*24;uhttps%3A//rutracker.org/forum/tracker.php%3Fnm%3D%25D0%25B0%25D0%25B1%25D0%25B1%25D0%25B0;h;0.9531689551806904"],
iframe[src="https://rutrk.org/iframe/MG-2/MG-bottom.html?rnd=79103007"],
img[src="//openstat.net/cnt?cid=3058772&amp;rnd=79103007"],
iframe[src="//rutrk.org/iframe/adlabs-topic-2.html"],
iframe[src="https://windcdna.com/api/banner/5873aa850c1ce?rnd=0"],
img[src="//counter.yadro.ru/hit?t16.2;rhttps%3A%2F%2Frutracker.org%2Fforum%2Ftracker.php%3Fnm%3D%25D0%25B0%25D0%25B1%25D0%25B1%25D0%25B0;s1047*589*24;uhttps%3A//rutracker.org/forum/viewtopic.php%3Ft%3D4907610;h;0.06980267146856922"],
iframe[src="https://rutrk.org/iframe/MG-2/MG-bottom.html?rnd=440669067"],
img[src="//openstat.net/cnt?cid=3058772&amp;rnd=440669067"],
img[src="//counter.yadro.ru/hit?t16.2;rhttps%3A%2F%2Frutracker.org%2Fforum%2Findex.php;s1047*589*24;uhttps%3A//rutracker.org/forum/tracker.php%3Fnm%3D%25D0%25B0%25D0%25B1%25D0%25B1%25D0%25B0;h;0.6079139477843789"],
iframe[src="https://rutrk.org/iframe/MG-2/MG-bottom.html?rnd=204941995"],
img[src="//openstat.net/cnt?cid=3058772&amp;rnd=204941995"],
img[src="//counter.yadro.ru/hit?t16.2;rhttps%3A%2F%2Frutracker.org%2Fforum%2Ftracker.php%3Fnm%3D%25D0%25B0%25D0%25B1%25D0%25B1%25D0%25B0;s1047*589*24;uhttps%3A//rutracker.org/forum/viewtopic.php%3Ft%3D4911778;h;0.5976089081020911"],
iframe[src="https://rutrk.org/iframe/MG-2/MG-bottom.html?rnd=528916837"],
img[src="//openstat.net/cnt?cid=3058772&amp;rnd=528916837"]
{display:none !important;}</style>
  <style type="text/css">.force-select{ -moz-user-select: text!important; }</style></head>

  <body dir="ltr">

    <!-- ERROR ITEM CONTAINER (removed during loading to avoid bug 39098) -->
   

    <!-- PAGE CONTAINER (for styling purposes only) -->
    <div id="errorPageContainer">
   
      <!-- Error Title -->
      <div id="errorTitle">
        <h1 id="errorTitleText">Документ просрочен</h1>
      </div>
     
      <!-- LONG CONTENT (the section most likely to require scrolling) -->
      <div id="errorLongContent">
     
        <!-- Short Description -->
        <div id="errorShortDesc">
          <p id="errorShortDescText">Этот документ более не доступен.</p>
        </div>

        <!-- Long Description (Note: See netError.dtd for used XHTML tags) -->
        <div id="errorLongDesc"><p>Запрошенный документ не доступен в кэше Pale Moon.</p><ul><li>В целях безопасности Pale Moon не производит автоматический повторный запрос важных документов.</li><li>Нажмите «Попробовать снова», чтобы повторно запросить документ с веб-сайта.</li></ul></div>

        <!-- Override section - For ssl errors only.  Removed on init for other
             error types.  -->
       
      </div>

      <!-- Retry Button -->
      <button id="errorTryAgain" autocomplete="off" onclick="retryThis(this);" autofocus="true" disabled="disabled">Попробовать снова</button>
      <script>
        // Only do autofocus if we're the toplevel frame; otherwise we
        // don't want to call attention to ourselves!  The key part is
        // that autofocus happens on insertion into the tree, so we
        // can remove the button, add @autofocus, and reinsert the
        // button.
        if (window.top == window) {
            var button = document.getElementById("errorTryAgain");
            var nextSibling = button.nextSibling;
            var parent = button.parentNode;
            parent.removeChild(button);
            button.setAttribute("autofocus", "true");
            parent.insertBefore(button, nextSibling);
        }
      </script>

    </div>

    <!--
    - Note: It is important to run the script this way, instead of using
    - an onload handler. This is because error pages are loaded as
    - LOAD_BACKGROUND, which means that onload handlers will not be executed.
    -->
    <script type="application/javascript">initPage();</script>

  </body>
</html>

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

1. https://rutracker.org/forum/tracker.php?nm=axxis
2.Зайти по любой ссылке, и походить по страничкам вперёд назад.И это ''нехорошее'' сообщение появится. Если вы там не зарегистрированы то вот мои данные-логин Rag69 парольTqfcd.Надеюсь хоть что-то поможет.

10-04-2017 20:12:18
Если не получится сразу поймать это сообщение (такое тоже бывает ходиш по страницам вперёд назад всё нормально,а потом бац...) то в поисковике что нибудь найти и походить по стр.

Firebug если что у меня устанавливается.

10-04-2017 21:43:52
yup
У меня возникла мысль,может это чуш и она не выполнима но всё же.Если этот скрипт не получается довести до положительного финала, то нельзя ли заставить PM открывать страницы rutracker.org
не в одной активной вкладке,как он делает сейчас, а каждую страницу в отдельной активной вкладке?

Rag пишет

У меня возникла мысль,может это чуш и она не выполнима но всё же.Если этот скрипт не получается довести до положительного финала, то нельзя ли заставить PM открывать страницы rutracker.org
не в одной активной вкладке,как он делает сейчас, а каждую страницу в отдельной активной вкладке?

Запросто:

Выделить код

Код:

// ==UserScript==
// @name        OpenAllInTabs
// @namespace   OpenAllInTabs
// @include     https://rutracker.org/*
// @version     1.0
// @grant       none
// ==/UserScript==
var a = document.getElementsByTagName("base");
if (a.length == 0) a = document.createElement("base");
else a = a[0];
a.setAttribute("target", "_blank")
document.head.appendChild(a);

yup
Всё отлично.Спасибище!Меня вполне это устраивает.
И хотелось бы услышать ваше мнение об этих скриптах.Стоит ли их устанавливать?
Google Search Tracking Disabler
https://forum.mozilla-russia.org/viewtopic.php?id=34974Redirect
Bypasser
http://userscripts-mirror.org/scripts/show/140193

И, кажется, я понял, что не так в прошлом скрипте. Если хотите, попробуйте такой вариант:

Выделить код

Код:

// ==UserScript==
// @name        ReSend
// @namespace   ReSend
// @include     https://rutracker.org/*
// @version     3
// @grant       none
// ==/UserScript==
function ClickButton2() {
  var Buttons = document.getElementsByTagName("button");
  if (Buttons.length > 0) Buttons[0].click();
  else if (window.c_o_u_n_t-- > 0) setTimeout(ClickButton2, 100);
};
var Button1 = document.getElementById("errorTryAgain");
if (Button1 == undefined) return;
Button1.click();
window.c_o_u_n_t = 5;
setTimeout(ClickButton2, 100);

yup пишет:

И, кажется, я понял, что не так в прошлом скрипте. Если хотите, попробуйте такой вариант

Не получилось.Отрабатывает как прошлый вариант.Бросайте его, или вам хочется его победить?;)

Rag пишет

Google Search Tracking Disabler
https://forum.mozilla-russia.org/viewtopic.php?id=34974Redirect

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

Rag пишет

Bypasser
http://userscripts-mirror.org/scripts/show/140193

У меня стоит. Но не как скрипт, а как дополнение: https://addons.mozilla.org/ru/seamonkey … tbypasser/

yup пишет:

У меня свой самописный скрипт того же назначения.

Не поделитесь?:angel:

Выделить код

Код:

// ==UserScript==
// @name       AntiGoogle
// @namespace  AntiGoogle
// @version    0.1.5
// @description  Skip redirection URL on Google search results.
// @include    /https?:\/\/www.google\.[^\/]+\/search.+/
// @include    /https?:\/\/google\.[^\/]+\/search.+/
// @copyright  yup, 2016
// @grant       none
// ==/UserScript==

function ClearLinks() {
  var links, i;

  links = document.getElementsByTagName("a");
  for (i = links.length-1; i >= 0 ; i--) {
    var link = links[i];
    if (link.hasAttribute("onmousedown")) {
      if (link.removeEventListener) {
        link.removeEventListener("mousedown", link.onmousedown, false);
      } else if(link.detachEvent) {
        link.detachEvent("onmousedown", link.onmousedown);
      }
      link.removeAttribute("onmousedown");
    }
    if (link.hasAttribute("onmouseup")) {
      if (link.removeEventListener) {
        link.removeEventListener("mouseup", link.onmouseup, false);
      } else if(link.detachEvent) {
        link.detachEvent("onmouseup", link.onmouseup);
      }
      link.removeAttribute("onmouseup");
    }
    if (link.hasAttribute("onclick")) {
      if (link.removeEventListener) {
        link.removeEventListener("click", link.click, false);
      } else if(link.detachEvent) {
        link.detachEvent("click", link.click);
      }
      link.removeAttribute("onclick");
    }

    if (link.href.indexOf("url?sa=") > -1)
      link.setAttribute("href", decodeURIComponent(link.href.split('&').filter(item => item.substr(0,4) == 'url=')[0].substring(4)))

  }

  links = document.getElementsByClassName("i3599");
  for (i = links.length-1; i >= 0 ; i--) links[i].removeAttribute("jsaction");

  links = document.getElementsByClassName("i3596");
  for (i = links.length-1; i >= 0 ; i--) links[i].removeAttribute("jsaction");

  setTimeout(ClearLinks, 2000);
};
setTimeout(ClearLinks, 20);

Здесь гугловский шпионаж убирается не только с обычных поисковых страниц, но и поиска картинок.

yup
Огромное спасибо за ваше терпение.
И последнее если можно.
Redirect Bypasser показывает всплывающий значок над ссылкой,так вот я не пойму нажимать на ссылку или на значок? И что означают разные цвета значков.Перевод я не досконально не понял.Ещё раз спасибо.

Rag пишет

Redirect Bypasser показывает всплывающий значок над ссылкой,так вот я не пойму нажимать на ссылку или на значок?

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

Rag пишет

И что означают разные цвета значков.

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

11-04-2017 00:11:08
Есть специальная страничка, на которой можно поупражняться: http://mozlima.github.io/redirectbypass … asser.html

Получил-таки в PaleMoon запрос на подтверждение отправки данных и понял, почему скрипт не работал: я же думал, что этот запрос выдаётся во вкладке браузера - так же, как и первый - а оказалось, что в отдельном диалоговом окне. Скрипты Greasemonkey туда доступа не имеют в принципе. И я даже не уверен, что скрипты Custom Butons это могут.

Хочу избавится от дополнений в которых я использую одну-две функции.
Стоит задача возврата панели дополнений без дополнительный адонов. В теме по userChrome.css привели ниже приведенный код для аддона Custom Buttons. Можно его как то адаптировать для Greasemonkey?

скрытый текст

Выделить код

Код:

(function(){
  if (document.getElementById("ctraddon_addon-bar") || document.getElementById("ctr_addon-bar"))
    return;

  const kNSXUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
  Components.utils.import("resource:///modules/CustomizableUI.jsm");

  // spring and wrapper
  let toolbarspring = document.createElementNS(kNSXUL, "spacer");
  toolbarspring.setAttribute("flex", "1");
  toolbarspring.setAttribute("id", "spring_revertAddonBarStatusBar");
  toolbarspring.setAttribute("removable", "false");
  let palette = document.getElementById("navigator-toolbox").palette;
  palette.appendChild(toolbarspring);

  let dmy = document.createElementNS(kNSXUL, "toolbaritem");
  dmy.setAttribute("id", "ucjs-status-bar");
  dmy.appendChild(document.getElementById("status-bar"));
  palette.appendChild(dmy);

  //create toolbar
  let addonbar = document.createElementNS(kNSXUL, "toolbar");
  addonbar.setAttribute("id", "ucjs-addon-bar");
  addonbar.setAttribute("customizable", "true");
  addonbar.setAttribute("mode", "icons");
  addonbar.setAttribute("iconsize", "small");
  addonbar.setAttribute("context", "toolbar-context-menu");
  addonbar.setAttribute("class", "toolbar-primary chromeclass-toolbar customization-target");
  addonbar.setAttribute("toolbarname", "UCJS Add-on Bar");
  addonbar.setAttribute("toolboxid", "navigator-toolbox");


  //register toolbar.id
  try {
    CustomizableUI.registerArea("ucjs-addon-bar", {
      type: CustomizableUI.TYPE_TOOLBAR,
      defaultPlacements: ["spring_revertAddonBarStatusBar", "ucjs-status-bar"]
    });
  } catch(ee) {}

  var bottombox = document.getElementById("browser-bottombox");
  bottombox.appendChild(addonbar);

  let style = ' \
    @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); \
    #ucjs-addon-bar { \
      border-top: 1px solid threedshadow; \
      border-bottom: 0 solid transparent; \
    } \
\
    #main-window[customizing] #ucjs-addon-bar { \
      border: 1px dotted threedshadow; \
    } \
\
    #main-window[customizing] #ucjs-addon-bar #status-bar { \
      border: 1px solid black; \
      opacity: 0.5; \
    } \
\
    #main-window[customizing] #spring_revertAddonBarStatusBar { \
      margin-left: 10px; \
      margin-right:10px; \
      border: 1px dashed threedshadow; \
    } \
    '.replace(/\s+/g, " ");

  let sspi = document.createProcessingInstruction(
    'xml-stylesheet',
    'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"'
  );
  document.insertBefore(sspi, document.documentElement);
  sspi.getAttribute = function(name) {
    return document.documentElement.getAttribute(name);
  };

  BookmarkingUI._updateCustomizationState();
})();

leshiy_odessa
Скрипты Greasemonkey внедряются в страницы сайтов и не имеют доступа к потрохам браузера.
Внутри браузера работают скрипты Custom Buttons и userChrome.js

yup
Не давно вы поделились со мной своим скриптом ''AntiGoogle''
https://forum.mozilla-russia.org/viewtopic.php?pid=734762#p734762
Для работы скриптов я пользуюсь Custom Buttons кнопкой ''UserScriptLoader''и там в меню указываются скрипты активные на данной странице.Так вот по каким бы я страницам ни ходил ''AntiGoogle''в меню не появляется.И вот у меня закралось подозрение что он не работает.
Прошу ваше помощи.

Rag
Сейчас нет времени - автомобиль ждёт у крыльца "под парАми":) Вернусь вечером - посмотрю.

Но определить, работает скрипт или нет, очень просто - на любой ссылке в поисковой выдаче Google щёлкнуть второй (правой) кнопкой мыши. Если в информационном окошке, где показывается, куда эта ссылка ведёт, (у меня это вообще строка статуса) ссылка изменится с красивой правильной, на длиннющую кошмарную, начинающуюся с "google.com", то скрипт не работает. Если же ссылка останется какой была - значит, скрипт своё дело сделал.

yup
Спасибо за разъяснение.Работает.ok.gifИ ссылки с красивой на длиннющую кошмарную не изменяются.Это меня сбила менюшка в ''UserScriptLoader''Так что зря я тут забеспокоился.
И ещё один вопросик если можно.Реальна ли к воплощению моя хотелка.№11694
Ещё раз спасибо.

Rag пишет

Реальна ли к воплощению моя хотелка.№11694

Через Greasemonkey - нет. Но расширения, имеющие желаемую функциональность, существуют, а значит, и через Custom Buttons это сделать можно. Но есть ли смысл делать, если можно взять готовое расширение?

yup пишет:
Через Greasemonkey - нет. Но расширения, имеющие желаемую функциональность, существуют, а значит, и через Custom Buttons это сделать можно. Но есть ли смысл делать, если можно взять готовое расширение

Расширения не хотелось бы,да и названия не знаю.И вряд ли существует расширение с таким функцианалом как мне хочется.К стати говоря на Palemoon ещё и не каждое дополнение подходит.

Rag пишет

Расширения не хотелось бы

Разницы между кнопкой и расширением две:
1. Код кнопки гораздо легче самостоятельно править.
2. У расширения изменение настроек проще и нагляднее.
Ресурсоёмкость обоих вариантов одинаковая.

Rag пишет

К стати говоря на Palemoon ещё и не каждое дополнение подходит.

Можно поперебирать в надежде:
Override User Agent
ua-site-switch
UAControl

yup
Нет слов.Я тут людям мозги компостирую.Сделайте мне кнопку.А ларчик то просто открывается,поставил UAControl и всё что я хотел зафунциклировало.:lol:Спасибо!!!

Подскажите, может ли кто поделиться скриптом GreaseMonkey, выдающим всплывающую подсказку с переводом слова с англ.языка на русский, при наведении мыши на него.
Как это раньше было в плагине Firefox "Яндекс-Элементы":
h_1494012607_4447300_1636261555.png

kdjy пишет:
Подскажите, может ли кто поделиться скриптом GreaseMonkey, выдающим всплывающую подсказку с переводом слова с англ.языка на русский, при наведении мыши на него.
Как это раньше было в плагине Firefox "Яндекс-Элементы":

Попробуйте может подoйдёт.
Google Translator Tooltip Expanded Fork
https://greasyfork.org/ru/scripts/16204-google-translator-tooltip-expanded-fork
Translate.google tooltip
https://greasyfork.org/ru/scripts/9285-translate-google-tooltip

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

kdjy, 2 клика по слову Lingualeo English Translator

Спасибо вам, но тоже не совсем то.
Для перевода все равно требуется клик, а хотелось бы обойтись без него.
Как, например, перевести текст, являющийся ссылкой?

h_1494159614_7800195_2337554441.png

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

kdjy

Как, например, перевести текст, являющийся ссылкой?

Select like opera
Select text inside a link like Opera

Такая проблема - есть скрипт https://greasyfork.org/ru/scripts/811-r … indow-size. После обновления у меня отвалилась возможность регулировать громкость от дополнения Magic Action for Youtube. Я поискал старые версии, удалил текущую, но мне стало писать, что данный пользовательский скрипт не совместим с FF v53.0
Прошу помощи, хочется что бы хотя бы скрипт заработал, пусть даже без регулировки звука колесиком мышки. Спасибо!
upd: решил проблему установкой 96 версии скрипта и нажатием кнопки "включить" в панели аддонов. всем спасибо

Друзья, подскажите, существует ли в природе такой скрипт, чтоб разворачивал видео youtube в полный экран на сторонних сайтах?
Например вот здесь sovsport.ru у меня кнопка во весь экран не активна.

Alex_one
И разворачивает на этом сайте, в том числе.
FYTE /Fast YouTube Embedded/ Player

Alex_one пишет

Друзья, подскажите, существует ли в природе такой скрипт, чтоб разворачивал видео youtube в полный экран на сторонних сайтах?

Maximize Video

oleg.sgh
Uxapb
Спасибо! На всякий случай забрал два cbebed6eb642.gif
273e7bd339ef.gif

Задачка задач :)

В роутерах TP-LINK есть возможность блокировать по спискам URL и IP. Добавлять 100-200 полей вручную как вы понимаете достаточно муторно и неэффективно (поначалу так и делал). Поэтому, если кому интересно, то сделайте пожалуйста скрипт для добавления URL или IP с локального списка. Если с локального списка проблематично, то в принципе ничего страшного можно и из списка в самом скрипте. Также есть одно ограничение. URL должен быть не более 31 символа. Я пришел к выводу, что ограничивать URL лучше с конца  в начало.

Веб эмулятор на котором можно потренироваться — Access Control —> Target —> Edit

Списки для тренировки :
https://pastebin.com/esJfaW9m
https://pastebin.com/CKuKL81b

Нужно следующее:
Открытие ссылок всегда в новой вкладке для указанного домена...программа яндекс (tv.yandex.ru). например.
Нашел скрипт, с точность до наоборот -  Открытие всех ссылок в текущей вкладке и похожий - Открыть внешнюю ссылку в новой вкладке.
Может кто может их переделать или написать новый?

oleg.sgh
Переделать не тяжело, но:
1. Что в данном случае имеется в виду под доменом? например, в случае tv.yandex.ru домен - это yandex.ru, строго tv.yandex.ru или tv.yandex.ru включая его поддомены (напр. abc.tv.yandex.ru)?
2. Переход по ссылке не всегда происходит на тот адрес и тем образом, которые в этой ссылке указаны. Если на эту ссылку навешаны обработчики событий мышки или клавиатуры, то они могут задавать совсем другой адрес и способ. Надёжного метода борьбы с этим нет: единственный способ - добавить ещё и свой обработчик, но куда и как в этом случае произойдёт переход предсказать невозможно, так как порядок срабатывания обработчиков непредсказуем.

29-07-2017 03:12:18
Если интересует стргое совпадение с именем домена (т.е. хоста), то код скрипта может быть таким:

Выделить код

Код:

"use strict";

function getAnchor(element) {
  while (element && element.nodeName != "A") element = element.parentNode;
  return element;
}

document.addEventListener("click", function(e) {
  var hosts = [
        "tv.yandex.ru"
      , "domain1.abc"
      , "domain2.def"
      ];
  var anchor = getAnchor(e.target);    
  if (anchor.hostname in hosts) anchor.target = "_blank";
});

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

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

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

Выделить код

Код:

// ==UserScript==
// @name        Yandex
// @namespace   al
// @include     http*://tv.yandex.ru/*
// @version     1
// @grant       none
// ==/UserScript==

function getAnchor(element) {
  while (element && element.nodeName != "A") element = element.parentNode;
  return element;
}

document.addEventListener("click", function(e) {
  var hosts = [
        "tv.yandex.ru"
      , "domain1.abc"
      , "domain2.def"
      ];
  var anchor = getAnchor(e.target);    
  if (anchor.hostname in hosts) anchor.target = "_blank";
});

Выделить код

Код:

// ==UserScript==
// @name        YandexTV
// @namespace   YTV
// @include     http*://tv.yandex.ru/*
// @version     1
// @grant       none
// ==/UserScript==
function getAnchor(element) {
  while (element && element.nodeName != "A") element = element.parentNode;
  return element;
}

document.addEventListener("click", function(e) {
  var hosts = [
        "tv.yandex.ru"
      , "domain1.abc"
      , "domain2.def"
      ];
  var anchor = getAnchor(e.target);
  if (hosts.indexOf(anchor.hostname) >= 0) anchor.target = "_blank";
});

Кстати, "domain1.abc" и "domain2.def" здесь только как пример добавления других сайтов.

yup
Замечательно. Спасибо.

Есть такая проблема с habrahabr.ru и geektimes.ru. Значит если включить uBlock, то становится невозможным пользоваться клавиатурными хоткеями "J" (переход к следующему элементу списка) и "K" (переход к предыдущему элементу списка). Вместо следующей статьи идет перескок к последней.
Так же если добавить некоторые свои правила по вырезания некоторых блогов, то аналогично хоткеи вылетаю. Я так подозреваю что там проверка последовательности. Если вырезанная реклама или блог, то всё ломается. Помогите пожалуйста это обойти.


Выделить код

Код:

! ВЫРЕЗАЛ — "Управление"
habrahabr .ru##:xpath(.//a[contains(@href,'https://habrahabr.ru/flows/management/')]//ancestor::div[2])
! ВЫРЕЗАЛ — "МАРКЕТИНГ"
habrahabr.ru##:xpath(.//a[contains(@href,'https://habrahabr.ru/flows/marketing/')]//ancestor::div[2])

habrahabr.ru##:xpath(.//a[contains(text(),'Как работают ИТ-специалисты.')]//ancestor::div[2])

geektimes.ru##:xpath(.//a[contains(@href,'https://geektimes.ru/company/madrobots/blog/')]//ancestor::div[2])
geektimes.ru##:xpath(.//a[contains(@href,'https://geektimes.ru/company/madrobots/blog/')]//ancestor::div[2]//preceding::div[1])
geektimes.ru##:xpath(.//a[contains(@href,'https://geektimes.ru/company/top3dshop/')]//ancestor::div[2])
geektimes.ru##:xpath(.//a[contains(@href,'https://geektimes.ru/company/top3dshop/')]//ancestor::div[2]//preceding::div[1])
geektimes.ru##:xpath(.//a[contains(@href,'https://geektimes.ru/company/dadget/')]//ancestor::div[2])
geektimes.ru##:xpath(.//a[contains(@href,'https://geektimes.ru/company/dadget/')]//ancestor::div[2]//preceding::div[1])

leshiy_odessa
По-моему, это вопрос несколько для другой темы форума. Или это запрос на скрипт Greasemonley, который восстановит управление с клавиатуры?

yup пишет

Или это запрос на скрипт Greasemonley, который восстановит управление с клавиатуры?

Да это запрос на скрипт. Мне показалось, что это перекликается с тем как вы помогли заблочить проверку на rutracker.
То есть на хабре стоит какая то проверка очередности или даже не проверка, а нумерация блоков. Когда выпадает один блок, то всё рушится.

Код фильтра с uBlock это для общего понимания.

Ребята помогите разобраться.На Pale Moon 27.4.1 установлен скрипт RU AdList JS Fixes вместо Greasemonkey использую UserScriptLoader Так вот мне кажется что скрипт не работает.Включается (отображается в меню USL) но каких ни будь явных изменений при вкл или откл скрипта на страницах не заметно.Кто пользуется этим скриптом,не посчитайте за труд, киньте пожалуйста ссылку на страницу где явно можно увидеть его работу.А если бы ещё скриншот было бы вообще отлично.
Спасибо.

для PM есть другой плугин для скриптов Guerilla Scripting  Хотя, и в USl он вродеб работал норм.
Вот на этом сайте нопример (и др. где плеер грузит видео с moonwalk.cc) hdkinoteatr.com , без скрипта будет ожидание в 15 секунд перед воспр. и внизу отсчёт. Со скриптом - сразу видео , без ожидания. Вот это он и делает.
+ еще на других сайтах кой-чего.  Хотя, и сыплет ошибку у мя в консоли:

Выделить код

Код:

Ошибка: NotFoundError: Node was not found
Источник: file:///D:/MyPROGRAMs/INET/PaleMoon/Profiles/main-profile/guerillajs/scripts/RU%20AdList%20JS%20Fixes.user.js
Строка: 803

Так же, ЕЯПП , убирает яндекс.метрику, другие рекламные inline-scripts "отключает" возвращая в их переменные мусор. В общем, это скрипт-помощнег, не замена блокировщику.

mokujin
Спасибо что откликнулись.
Судя по вашему сообщению у вас PM установлено Guerilla Scripting и скрипт работает.
Долго я экспериментировал.Испытывал скрипт в PM и FF на http://www.hdkinoteatr.com/ И в итоге вот что выяснил.
Pale Moon 27.4.1
1.UserScriptLoader - Скрипт включается,но 15 секундный отсчёт тикает.
2.Greasemonkey - Аналогично с первым пунктом.
3.Guerilla Scripting - Секундомера нет,появляется первый кадр фильма,и на этом всё.Дальше картинка не идет.Тоже пишет подобную ошибку в консоли.
Firefox-54
USL также как в PM.А вот с Greasemonkey всё работает.
PM у меня основной браузер.Обыдно.smile2.gif

Да , у мя PM + GS и этот скрипт убирает отсчёт рекламы(эта ф-ция скрипта у мя точно работает), для этого его и пользую. Выключен в основном, когда хочу киношку - включаю.
Есть такое в PM со скриптами, не всегда работают. Афтары делают в основном под FF+GM , другое не проверяют.

Rag
Мучался в своё время с UserScriptLoader, не все скрипты подхватывал, плюнул, установил Greasemonkey, полёт нормальный, как то так.

villa7
Да вот и я сегодня послал этот USL лесом.Поставил Greasemonkey.

leshiy_odessa пишет

Есть такая проблема с habrahabr.ru и geektimes.ru. Значит если включить uBlock, то становится невозможным пользоваться клавиатурными хоткеями "J" (переход к следующему элементу списка) и "K" (переход к предыдущему элементу списка).

Дошли, наконец, руки позаниматься. Не работают у меня на указанных сайтах "J", "K", а также "H" и "L". Даже без uBlock не работают - на чистом-голом Firefox.
Может, я не на те страницы захожу? Можно URL какой-нибудь конкретный в качестве примера?

yup пишет

Не работают у меня на указанных сайтах "J", "K", а также "H" и "L". Даже без uBlock не работают - на чистом-голом Firefox.
Может, я не на те страницы захожу? Можно URL какой-нибудь конкретный в качестве примера?

Вот это поворот. Да нет никаких особых станиц. Прямо с заглавной habrahabr.ru уже должно листать. У меня листает на главной в Firefox (43.0.1) под Windos XP даже если выбрана русская раскладка. Даже если не залогинится. Листает даже в Firefox TOR. Само собою работает и в более новых версиях Firefox 54.0.1 (64-бит).
Может у вас режется реклама или скрипты на роутере? Или, что более невероятнее, у вас на ноутбуке включен "NumLock" соответственно это уже не буквы, а цифры. А может это уже дело в Linux.

yup пишет

Дошли, наконец, руки позаниматься.

Огромное вам спасибо.

Надо вывести во фрейме слева, вверху
https://api.ipify.org/

leshiy_odessa пишет

Может у вас режется реклама или скрипты на роутере?

Исключено.
И в hosts только внутрискайповая реклама заблокирована.

leshiy_odessa пишет

Или, что более невероятнее, у вас на ноутбуке включен "NumLock" соответственно это уже не буквы, а цифры.

Но тогда я и сюда писать бы не смог - это ж половина алфавита выпадает.

leshiy_odessa пишет

Вот это поворот. Да нет никаких особых станиц. Прямо с заглавной habrahabr.ru уже должно листать.

Странно всё. Сейчас проверил - работает. А в прошлый раз пробовал и в Firefox, и в Seamonkey - ни там, ни там не работало.

:)

Rag, недавно заменил эти скрипты betterFox-ом, поотключал ненужное и подсказали Стиль для №-ации результатов

скрытый текст

Выделить код

Код:

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("*google.com*") {

}
/* (new8) RESULTS COUNTER */
#search {
counter-increment: myIndex 0 !important;
}
#res .g:before {
counter-increment: myIndex ! important;
content: counter(myIndex, decimal-leading-zero);
position: absolute ;
display: inline-block ;
min-width: 15px ;
margin-top: 2px ;
margin-left: -45px ;
padding: 1px 2px ;
border-radius: 3px ;
font-size: 10px ;
text-align: center ;
color: #000000;
background: #FAFAFA ;
z-index: 10;
}

vitalii201
Спасибо!!! smile9.gif

Приветствую всех!
Хотелось бы услышать совет. Стоит ли что то из этого устанавливать? Или может у кого есть более достойные варианты. А то я немного заблудился в описаниях к этим скриптам. Расписываются все красиво,а на деле может полная ерунда.
Clean Links
Redirect remover
Прямые ссылки
Прямые ссылки наружу

Rag
Если я правильно понимаю желание, то:
Универсального решения не существует. Я предпочитаю использовать расширение "Redirect Bypasser" + скрипты (в основном самодельные) для борьбы с теми редкими сайтами, где расширение не справляется.

Но лучше, всё же, формализовать задачу.

yup пишет

Но лучше, всё же, формализовать задачу.

Задача простая,меньше переадресаций.Приведённые выше скрипты как бы все заточены под это.Вот поэтому и хотелось бы поставить что то с пользой, не навредив.А то поставлю допустим Clean Links и  Прямые ссылки а они в место того чтоб дополнять друг друга начнут мешать.

Rag
Вот поэтому я и предпочитаю "Redirect Bypasser": там никакой самодеятельности, только информирование пользователя, и любое действие - исключительно по его выбору.

Пробовал я скрипт ставить "Redirect Bypasser" но что то мне он не шибко понравился.Не понравился из за того что нужно клацать не по ссылке а выцеливать по значку.

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

Rag
В плане очистки, я тоже по-опыту исп-я за RedirectBypasser, но... с ним у мя падает бравзер на кнопках CB , те что для установки выложенны, или из  html-backup-a моего.  надо не забывать отключать , когда с кнопками играюсь   :)  исключения чёта неполучилось добавить.

Rag пишет

ставить "Redirect Bypasser" но что то мне он не шибко понравился.Не понравился из за того что нужно клацать не по ссылке а выцеливать по значку.

там в настр. найди галочку "подменять если один уровень переадресации" (в General)
+
для очистки ссылок есть отличный скрипт, еще времен Оперы от Lex1  Но нельзя открыть неочищенную ссылку, только ее тултип выводится.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name                Clean-URI
// @description        Очищает ссылки на тех сайтах где стоит переход http://...goto?=<нужный адресс>, делая рядом "чистую ссылку" - '☼' настраевается, можно сразу заменять
// @version             1.3.3
// @license               GPL
// @include              http*://vk.com/*
// @include              http://rutor.in/*
// @exclude                   https://accounts.google.com/*
// @exclude                   https://www.google.com/*
// @exclude                   https://mail.yandex.ua/*
// @run-at                document-start
// ==/UserScript==

(function cleanURlredir() {

        /****************************************************************************************
                                           Options can be set here
        ****************************************************************************************/

        var useSeparateLink = false; //true to create 'CleanURL' links, false to replace existing
        var fixLinkType = 0; //1 = redirect links, 2 = JavaScript window.open links, 0 = both
        var allowParams = false; //true = assume that all parameters after the start of the redirect URL are part of the URL
                                 //false = (default) only allow the redirect URL to exist within a single query parameter

        /***************************************************************************************/

        for( var x = 0, urlMatch = /window\.open\s*\(\s*["']([^"']*)["']/, httpMatch = /https?(:|%3a)(\/|%2f)(\/|%2f)/i; x < document.links.length; x++ ) {
            var newHref = '', curLink = document.links[x];
            if( ( fixLinkType != 1 ) && curLink.protocol.toLowerCase() == 'javascript:' && curLink.href.match(urlMatch) ) {
                newHref = (RegExp.$1).replace(/\\\//g,'\/');
            } else if( ( fixLinkType != 1 ) && ( curLink.protocol.toLowerCase() == 'javascript:' || curLink.hash == '#' ) && curLink.hasAttribute('onclick') && curLink.getAttribute('onclick').match(urlMatch) ) {
                newHref = (RegExp.$1).replace(/\\\//g,'\/');
            } else if( ( fixLinkType != 2 ) && curLink.hostname && !curLink.hostname.match(/w3c?.org$/) ) {
                if( pos = curLink.search.match(httpMatch) ) {
                    newHref = unescape(allowParams?curLink.search.substr(pos.index).replace(/#.*$/g,''):curLink.search.substr(pos.index).replace(/[&#].*$/g,''));
                } else if( pos = curLink.pathname.match(httpMatch) ) {
                    newHref = unescape(curLink.pathname.substr(pos.index).replace(/[&#].*$/g,''));
                }
            }
            if( newHref ) {
                var oRel = curLink.getAttribute('rel');
                oRel = oRel ? ( oRel + ' ' ) : '';
                curLink.setAttribute('rel',oRel+'redirect');
                if( useSeparateLink ) {
                    var oLink = document.createElement('a');
                    oLink.setAttribute('href',newHref);
                    oLink.appendChild(document.createTextNode('☼'));
                    curLink.parentNode.insertBefore(document.createTextNode(' '),curLink.nextSibling);
                    curLink.parentNode.insertBefore(oLink,curLink.nextSibling.nextSibling);
                    x++;
                } else {
                    curLink.setAttribute('replacedurl',curLink.href);
                    curLink.title = ( curLink.title ? ( curLink.title + ' - ' ) : '' ) + 'Old URL: ' + curLink.href;
                    curLink.href = newHref;
                }
            }
    }
   window.addEventListener("DOMContentLoaded",cleanURlredir, false);

// это уже добавления, не Лекса
// для VK.COM не работает дальше, при пролистывании ленты вниз, ссылки не чистятся.  Лучшего,  ничего не придумал  ;-((  кроме листенера на скроллинг. 
   window.addEventListener("DOMMouseScroll",cleanURlredir, false);
})();

yup
mokujin
Спасибо за отзывы.Если и правда RedirectBypasser такой ценный,то попробую ещё раз привыкнуть к нему.

mokujin пишет

там в настр. найди галочку "подменять если один уровень переадресации" (в General)

Snymok_2017_08_11_09_40_08_704_240.jpgi.gif О каком пункте ведётся речь.

Rag пишет

О каком пункте ведётся речь.

Галочка "Replace URL of the link" и две её дочерние.

yup
273e7bd339ef.gif

yup пишет

Странно всё. Сейчас проверил - работает

Есть какие то шансы по моему вопросу или там всё запутанно?

Хабр конечно слишком гиговый и они могли там наворотить всяких защит.

leshiy_odessa пишет

Есть какие то шансы по моему вопросу или там всё запутанно?

Пока не до того. От меня потребовали срочно предоставить решение задачи "кубатуры круга в одномерном пространстве", этим и занимаюсь. Ещё дня два-три осталось.

yup пишет

Ещё дня два-три осталось.

Я могу ждать месяцами, лишь был хоть какой шанс это решить.

leshiy_odessa с uMatrix работают гор. клавиши.
Смотри в свой uBlock и убирай все эти xpath из правил, сработавших на сайте. именно этот его способ резки элементов по xpath похоже и "виноват". Т.е. просто у тебя правила черезчур...

mokujin пишет

с uMatrix работают гор. клавиши.

У меня с uBlock тоже.

mokujin пишет

Смотри в свой uBlock и убирай все эти xpath из правил, сработавших на сайте.

Так в этом то и проблема, я хочу чтобы они работали.

mokujin пишет

Т.е. просто у тебя правила черезчур...

Сомневаюсь.

что нитак-то?? ты как-то определись с логикой и смыслом. Ты пишешь:

leshiy_odessa пишет

"J" (переход к следующему элементу списка) и "K" (переход к предыдущему элементу списка). Вместо следующей статьи идет перескок к последней.
Так же если добавить некоторые свои правила по вырезания некоторых блогов, то аналогично хоткеи вылетаю.

и тут же

leshiy_odessa пишет

mokujin пишет:

    с uMatrix работают гор. клавиши.

У меня с uBlock тоже

что тоже? тоже работает, так? А я тебе так и написал что у тебя черезмерно что-то режется через xpath , ты сам это пишешь

leshiy_odessa пишет

Так же если добавить некоторые свои правила по вырезания некоторых блогов, то аналогично хоткеи вылетаю.

... ты сам режешь эти клавиши :/

yup пишет

Странно всё. Сейчас проверил - работает. А в прошлый раз пробовал и в Firefox, и в Seamonkey - ни там, ни там не работало.

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

Всем привет. Подскажите пожалуйста, как обойти фильтр на сайте. Жму на любую из ссылок - идет перенаправление такого рода, приходится дополнительные действия совершать (при этом, что забавно, кнопка "нет" не работает). Упомянутая "регистрация" на ресурсе не помогла. Если это возможно осуществить скриптами, дополнениями, или чем иным - воспользуюсь любым способом. Заранее спасибо за помощь.
upd: Один из пользователей форума отметил, что у него такого рода фильтрации при переходе по ссылкам - нет. В связи с этим вопрос - с чем это может быть связано?
upd2: Сам потыкался по самым разным ссылкам на сайте, на какие-то сразу перекидывает. Вообще без понятия :(

LittleMontana пишет

Жму на любую из ссылок - идет перенаправление

жмакаю на любую из ссылок  - никакого перенапр-я нету. при скачивании тоже, сразу дает книжку. там станд. рекламмные домены, адривер-адвертур и проч.
Попробуй зарезать *.yandexadexchange.*  там фрейм с оттудава есть., может он. C uMatrix никакого редиректа нету.

LittleMontana
Попробуйте такой скрипт:

Выделить код

Код:

// ==UserScript==
// @name        Knigilub
// @namespace   Knigilub
// @include     http://knigilub.ru/*
// @version     1
// @grant       none
// ==/UserScript==
var URLs = document.getElementsByTagName("A")
  , URL, i
  ;
for (i = URLs.length - 1; i >= 0; i--) {
  URL = URLs[i];
  if (URL.href.substr(0, 24) != "http://knigilub.ru/stat/") continue;
  if (URL.href.substr(0, 34) == "http://knigilub.ru/stat/statz.php/") continue;
  URL.href = URL.href.substr(0, 24) + "statz.php/" + URL.href.substr(24);
};

не работает, пишет не совместим с версией FF 54.0.1

LittleMontana пишет

не работает, пишет не совместим с версией FF 54.0.1

Скрипт несовместим???? Или Greasemonkey? На официальной странице загрузки (https://addons.mozilla.org/ru/firefox/a … asemonkey/) написано, что совместим вплоть до версии 56 (включительно).

yup пишет

Скрипт несовместим????

скрипт несовместим

LittleMontana пишет

скрипт несовместим

На сообщение взглянуть можно?
(В скрипте нет ничего, что имело бы хоть какую-то связь с браузером. Да и не слышал я никогда, чтобы на скрипты Greasemonkey выдавались подобные сообщения. Максимум - в консоль сообщение о конкретной ошибке запишется.)

Вот так работает. Только думает долго, пока ответ от Knigilub получает.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        Knigilub
// @icon        http://knigilub.ru/templates/zag/images/favicon.ico
// @namespace   Knigilub
// @include     http://knigilub.ru/stat/*
// @grant       none
// ==/UserScript==
            
if (window.location.href.includes('knigilub.ru/stat'))
{window.location = window.location.href.replace('knigilub.ru/stat', 'knigilub.ru/stat/statz.php');
}

Ultima2m
спс, у меня думает быстро. менее секунды.
yup
и вам спасибо. вот скрин, как и просили
http://puu.sh/xdqqZ/86634e1f17.jpg

LittleMontana пишет

вот скрин, как и просили
http://puu.sh/xdqqZ/86634e1f17.jpg

Это откуда такая картинка? Специально только что установил версию 54.0.1 - в списке скриптов Greasemonkey про несовместимость ничего не пишется, да и сама строчка выглядит не так: ссылка "Подробнее" находится сразу под названием "Knigilub", а не далеко справа.

Глядючи на favicon сайта в качестве значка скрипта, подумал, что, может быть, это он виноват, но нет: прописал параметр @icon - значок изменился на нужный, а ругань так и не появилась.

Может, Вы, кроме добавления @icon, ещё какое-то изменение внесли, и это оно такой эффект даёт?

yup
в адресной строке: chrome://mozapps/content/extensions/extensions.xul
ничего не трогаю я в предложенных вариантах, так как не разбираюсь от слова совсем

LittleMontana пишет

ничего не трогаю я в предложенных вариантах, так как не разбираюсь от слова совсем

Да? А назначение значка скрипта само собой образовалось?

LittleMontana пишет

в адресной строке: chrome://mozapps/content/extensions/extensions.xul

Интересно. Даже не знал о таком способе, всегда пользовался официальным: меню "Дополнения" (Ctrl-Shift-A) -> "Пользовательские скрипты".
Попробовал через указанный адрес. Результат: есть надпись о несовместимости, но нет значка Greasemonkey у всего раздела "Пользовательские скрипты".
Для проверки создал ещё один скрипт, состоящий из единственной команды - alert('zzz').
Скрипт, естественно, работает, а на страничке по указанному адресу и про него написано, что несовместим.
Почему-то мне кажется, что Ctrl-Shift-A даёт более достоверные показания :)

yup пишет

Почему-то мне кажется, что Ctrl-Shift-A даёт более достоверные показания

на первый взгляд я с вами согласен, и на второй тоже :) можно как то запилить кнопку посредством CB, что бы открывало по нажатию на неё "дополнения" (ctrl+shitf+a)?
Вроде все работает, как предложил Ultima2m

LittleMontana

можно как то запилить кнопку посредством CB, что бы открывало по нажатию на неё "дополнения" (ctrl+shitf+a)?

Можно просто вытащить на панели штатный значок дополнения, в режиме настроить.

Мне надо видеть свой внешний IP на каждой странице куда я захожу. Раньше использовал скрипт show-ip.js от Lex1, но сейчас он не работает. Есть неплохой сервис с примерами применения. Пытался вставить скрипт в код страницы, но не смог.
Помогите!

ifln

Выделить код

Код:

var f = document.createElement("iframe");
f.src = "https://api.ipify.org";
document.body.insertBefore(f, document.body.firstChild);

Место вставки и стиль элемента отрихтовать по вкусу.
Только не забывайте, что это - внешний адрес, каким его увидел сайт api.ipify.org. Вовсе не обязательно, что сайты, на страницы которых данный элемент вставляется, видят именно этот адрес.

yup, спасибо!
Сделал так:

Выделить код

Код:

var f = document.createElement("iframe");
f.src = "https://api.ipify.org";
document.body.insertBefore(f, document.body.firstChild);
f.setAttribute('style', 'position:fixed;left:0;top:0;width:180px;height:48px;border:2px solid blue;z-index:9999;');
oleg.sgh пишет

Можно просто вытащить на панели штатный значок дополнения, в режиме настроить.

у меня для кнопки дизайн свой :) а так, конечно можно

LittleMontana
Тогда так:

Выделить код

Код:

document.dispatchEvent(new KeyboardEvent('keypress', { charCode:"a".charCodeAt(0), key:'a', code:'KeyA', keyCode:0, ctrlKey:true, shiftKey:true }));

Насколок я понимаю Stylis не может поменять html код с помощью CSS (ну почти). И вот я подумал тоже самое сделать с помощью Java. Мне нужно <frameset cols="182,55%,*"> поменять на <frameset cols="300,100%,0%">
Попробовал так — document.frameset.setAttribute('cols', '300,100%,0%'); , но ничего не получилось.

leshiy_odessa пишет

Попробовал так — document.frameset.setAttribute('cols', '300,100%,0%'); , но ничего не получилось.

Естественно, ведь frameset - не элемент документа, а всего лишь тег. И их "таких красивых" на странице может быть много.
А потому:
Получить список всех имеющихся frameset: document.getElementsByTagName('frameset');
Изменить столбцы, если frameset на странице заведомо один: document.getElementsByTagName('frameset')[0].setAttribute('cols', '300,100%,0%');

yup пишет

document.getElementsByTagName('frameset')[0].setAttribute('cols', '300,100%,0%');

Огромное спасибо, работает.

YouTubeCenter перестал работать с новым дизайном YouTube. Нужно переключаться на старый, но при этом с включенным скриптом YouTubeCenter показывается "пустая" страница. То есть нужно отключить скрипт YouTubeCenter, перейти на старый дизайн, а потом его снова включить. Само собою cookie живут до закрытия браузера.

Вопрос — кому то попадался скрипт или дополнения для автоматического включения старого дизайна YouTube?

Dumby пишет
Mishania пишет

или кнопка для CB?

С мыши чтоб меню не закрывалось что ли :/

скрытый текст

Выделить код

Код:

((listener, popup = document.getElementById("greasemonkey-tbb").firstChild) =>
    ["mousedown", "popuphiding"].forEach(type => addEventListener(type, listener, false, popup))
)({handleEvent(e) {
    if (e.type != "popuphiding") this.flag = e.target.script && !e.button;
    else if (this.flag) e.preventDefault(setTimeout(obj => obj.flag = false, 50, this));
}});

Обнаружил, что этот код ведёт себя по-разному, в зависимости от того, на каком тулбаре размещена иконка greasemonkey-tbb
1) Если на nav-bar - всё ОК, меню остаётся открытым после включения/отключения скрипта на этом меню Левой Кнопкой Мыши (ЛКМ).
2) Если на PersonalToolbar или menubar- то после первого клика меню не закрывается, а после второго - закрывается, как правило. После этого, оно открывается лишь после второго клика на дропмаркер.
3) Если на других тулбарах - меню закрывается после первого же клика ЛКМ по менюитему и затем оно тоже открывается лишь после второго клика на дропмаркер.
"Игрался" с задержками, менял mousedown на mouseup, добавлял mouseup - ничего не помогает...
Причём поведение на всех тулбарах, кроме  nav-bar трудно назвать консистентным - иногда меню закрывалось после клика ЛКМ на менюитем, а потом снова открывалось. Это случалось крайне редко.
Может Dumby посмотрит в чём дело и вынесет окончательный вердикт?

P.S. Dumby посмотрел и всё сделал: Попробовал переделать. Тоже не конфета, но, надеюсь, чуть получше. От себя добавлю, что прекрасно работает. Прекрасно

02-10-2017 04:06:49

ifln пишет

yup, спасибо!
Сделал так:

Выделить код

Код:

var f = document.createElement("iframe");
f.src = "https://api.ipify.org";
document.body.insertBefore(f, document.body.firstChild);
f.setAttribute('style', 'position:fixed;left:0;top:0;width:180px;height:48px;border:2px solid blue;z-index:9999;');

А можно ещё и так:

Выделить код

Код:

var f = document.createElement("iframe");
var g = document.createElement("iframe");
f.src = 'http://xml.utrace.de/?query='+content.location.host;;
g.src = "https://api.ipify.org";
//f.src = 'file:///C:/Users/dfb/Downloads/misc/http%20_plugin.myip.ms_mignews';
document.body.insertBefore(f, document.body.lastChild);
f.setAttribute('style', 'position:fixed;left:750px;bottom:40px;width:150px;height:68px; background: rgba(256,256,0,0.5) !important; border:0px solid blue; !important; z-index:9999;');
document.body.insertBefore(g, document.body.lastChild);
g.setAttribute('style', 'position:fixed;left:900px;bottom:50px;width:110px;height:44px; background: rgba(0,256,256,0.5) !important; border:0px solid blue; !important; z-index:9999;');

Тогда Вы будете видеть не только свой ИП, но и ИП страницы, на которой Вы находитесь.
Оба фрейма можно поставить рядом, можно - один над другим, можно их в угол сверху, можно - посередине внизу (как в приведённом коде - короче, как душа пожелает

Установил я 4 greasmankey на последний ESR. НА 3.17 мои скрипты глючили, решил попробовать. Мне пока нравится, но.... новое меню ооочень не привычно. Зачем показывать все скрипты сразу - не понятно. Надеюсь к релизу исправят.

Здравствуйте. Подскажите как получить полные исходный код страницы.
Контент страницы подгружается через JS. Соответственно если смотреть исходный код через f12, то исходник будет неполный, с сылками на JS.
Но если смотреть через инспектор то все нормально.
Подскажите, как получить тоже что видно через инспектор.

Кажется есть аналогичный скрипт или рассширения для гугл, который обрезает в URL кликеры.
То есть URL выглядит так — http://4pda.ru/pages/go/?u=https://www.aliexpress.com/af/USB-TTL-UART-PL2303.html&e=67002435

Но открывается уже — http://ad.admitad.com/goto/1e8d114494a2288424f616525dc3e8/?ulp=https%3A%2F%2Fwww.aliexpress.com%2Faf%2FUSB-TTL-UART-PL2303.html&subid=1&subid1=714487&subid2=67002435&subid3=0

Само собою admitad.com режется на уровне роутера.

Как бы скриптом обрезать URL до настоящего — https://www.aliexpress.com/af/USB-TTL-UART-PL2303.html

Waik
F12 -> Консоль
document.documentElement.appendChild(document.createElement('pre')).textContent = new XMLSerializer().serializeToString(document);

leshiy_odessa пишет

Кажется есть аналогичный скрипт или рассширения для гугл, который обрезает в URL кликеры.
То есть URL выглядит так — http://4pda.ru/pages/go/?u=https://www.aliexpress.com/af/USB-TTL-UART-PL2303.html&e=67002435

Отвечу сам себе. Проблему можно решить с помощью дополнения — Redirector.
Но попробую сделать тоже самое на Greasemonkey.

4uyp0a1.png

update

С наскоку не получается (исходник) :(

Выделить код

Код:

// ==UserScript==
// @name           4pda.ru redirect remover
// @namespace      org.benzworld
// @description    Removes 4pda.ru redirect.
// @include        http://4pda.ru/*
// @grant          GM_log
// ==/UserScript==
            
(function() {
  var a = document.getElementsByTagName("a");
  for (var i=0; i<a.length; i++) {
    // Example: document.getElementsByTagName("a")[104].href
    if (a[i].href.match(/4pda\.ru\/pages\/go\/)) {
      var realurl = /[?&]u=([^&]*)/.exec(a[i].search)[1];
      if (realurl) {
        a[i].href = decodeURIComponent(realurl);
      } else {
        GM_log("Hmm, maybe the parameter name 'out' changed and broke things");
      }
    }
  }
})();

update2

Оказалось всё немножечко проще. Я так сегодня делал, но сдался на пол пути, увидел кучу .js и не захотел их просмотреть глазами. Но меня навели. Нужно было в Firefox ➜ «Веб разработка» ➜ «Сеть» ➜  «JS» искать скрипт с окончанием на =0.6.

К примеру :
s.4pda.to/riDbz2z2z1dDyH4.js?_=0.6
s.4pda.to/puDfpY1dhWjY.js?_=0.6

Ну а дальше блокировка uBlock и всё в порядке.

Друзья, изучаю зверя, не получается вызвать функцию. Добавляю кнопку и функцию по нажатию, не работает... что не так?

document.body.innerHTML+="<input type='button' value='dddddddddddddddddd' onclick='hhh()'>"

var ppp="";
ppp+="<script>"
ppp+="function hhh (){"
ppp+="alert('dsf')"
ppp+="}"
ppp+="</script>"
document.body.innerHTML+=ppp

yup пишет

// ==UserScript==
// @name        rutrackerRSS
// @namespace   rutrackerRSS
// @include     https://rutracker.org/*
// @include     http://rutracker.org/*
// @version     1
// @run-at      document-start
// @grant       none
// ==/UserScript==
window.self = window.top;

Что-то сломалось. Вы не могли бы посмотреть еще раз?

Обновил гризманки до последней версии — и всё пропало. В смысле, что со страницы аддонов исчезла вкладка скриптов, а на сайтах установленные скрипты перестали работать.
Лиса esr. Обезьяна — последняя.

В сторону: это не первый случай, когда последние версии аддонов ломаются в esr-ветке. Хоть вообще их не обновляй.

P.s. Мне уже советовали переходить на какую-нибудь другую обезьяну. Уже встречал скрипты, которые работают в других, но не работают в самой гризманки.

leshiy_odessa пишет

Что-то сломалось. Вы не могли бы посмотреть еще раз?

Мда, разобрался. Это долбаный Greasemonkey. Правильно мне советовали переходить на Tampermonkey. На нём всё заработало.

ребята, не пинайте, я устал искать просто, дайте осмысленный скрипт для замены текста на странице.

Должен 1 вариант: менять только видимую часть страницы при загрузке (без всяких нажатий на кнопки, автоматом), т.е. если есть на странице слово "ТЕСТ" должен заменить его на "test"

2 вариант: замена кода HTML, для правильного отображения некоторых страниц, типа замены CSS, но проще. Мне надо всего 1 символ заменить на загружаемой странице. Опять же при загрузке этой страницы.

       *Список адресов с возможностью использовать данную замену, чтобы не менял на всех подряд

Mrakobes666 пишет: ебята, не пинайте, я устал искать просто, дайте осмысленный скрипт для замены текста на странице.

Должен 1 вариант: менять только видимую часть страницы при загрузке (без всяких нажатий на кнопки, автоматом), т.е. если есть на странице слово "ТЕСТ" должен заменить его на "test"

юзай
https://addons.mozilla.org/ru/firefox/addon/foxreplace/
там и обычная замена и регулярки можно юзать и с адресами всё ок.
как раз для подобных задач

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

решено - наладил аддон

ПОдскажите пожалуйста, можно ли заставлять сайт и ссылки vk.com/ всегда открыватся в мобильной версии (m.vk.com/)?

Stkvsky пишет

ПОдскажите пожалуйста, можно ли заставлять сайт и ссылки vk.com/ всегда открыватся в мобильной версии (m.vk.com/)?

Скрипт для vk.com:

Выделить код

Код:

if (location.hostname == "vk.com") {location.hostname = "m.vk.com"}

10-02-2018 16:34:45
Кстати, а почему Greasemonkey в последнее время перестала работать? FF 52.6 ESR.

pointer пишет

Кстати, а почему Greasemonkey в последнее время перестала работать? FF 52.6 ESR.

Я остановился на обезьяне 3.17 и запретил её обновлять. Но когда и если перейду на квантум, буду смотреть другие обезьяны, скорей всего Tampermonkey или как там его. Потому что Greasemonkey с некоторыми скриптами в принципе не работает. Я с автором одного такого скрипта переписывался, он более-менее нашёл, что гризманки не нравится, но править всё равно не стал, ибо.

pointer пишет

Кстати, а почему Greasemonkey в последнее время перестала работать? FF 52.6 ESR.

Переходите на Tampermonkey. Я на него перешел с Greasemonkey и стало по ощущениям лучше.

Помогите сделать простенький скрипт для http://www.ontvtime.ru/records/rentv.html.
По умолчанию окно плеера 496*288, я через инспектор меняю на 650*450 в этой строке


<***** src="/images/players/FlashMediaPlayback_133.swf" type="application/x-shockwave-flash" width="496" height="288">

Или мне в тему по iMacros?

momo2000
Стиль?

Выделить код

Код:

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("www.ontvtime.ru") {
   [id^="dummyid"] {width: 650px; height: 450px;}
}
Выделить код

Код:

for  (i  =  0; i  <  document.getElementsByTagName('embed').length; i++)  {
 if (document.getElementsByTagName('embed')[i].src=='http://www.ontvtime.ru/images/players/FlashMediaPlayback_133.swf')
 {
  document.getElementsByTagName('embed')[i].width = 650
  document.getElementsByTagName('embed')[i].height = 450
 }
}

Проверьте, должно работать.

ifln, спасибо
pointer:beer: то, что нужно.

Если можно, имените пожалуйста чтобы ссылки открывались не в активной вкладке, а в фоновой.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        Open external link in new tab
// @version     0.1.3
// @namespace   eight04.blogspot.com
// @description This script will open any external link in new tab. Support dynamic content
// @include     http*
// @grant        none
// ==/UserScript==

"use strict";

function getAnchor(element) {
    while (element && element.nodeName != "A") {
        element = element.parentNode;
    }
    return element;
}

document.addEventListener("click", function(e){
    var anchor = getAnchor(e.target);
    if (!anchor || anchor.target || anchor.protocol == "javascript:" || e.isTrusted === false || !anchor.offsetParent || (e.isTrusted == null && !e.detail)) {
        return;
    }
    if (anchor.hostname != location.hostname) {
        anchor.target = "_blank";
    }
});

Stkvsky
без расширения не обойтись

pointer выручай, сайт внезапно стал с HTML плеером, скрипт не работает даже если перейти на старый плеер с FLASH
оригинал
<video crossorigin="" src="blob:http://www.ontvtime.ru/fbbc7913-137a-4019-a83a-869d048f88d2" style="min-height: 288px;" class="plyr--setup" width="496" height="288"></video>
я добавил min-width: 660px и изменил min-height: 480px
<video crossorigin="" src="blob:http://www.ontvtime.ru/13cddbe3-b04e-4bd7-a914-550e960048f9" class="plyr--setup" style="min-width: 660px; min-height: 480px; display: inline;" width="496" height="288"></video>

Но каждый раз менятеся ссылка на видео
blob:http://www.ontvtime.ru/fbbc7913-137a-4019-a83a-869d048f88d2

Stkvsky пишет

Если можно, имените пожалуйста чтобы ссылки открывались не в активной вкладке, а в фоновой.

Открытие URL из сторонней программы без активного окна (фокуса ) (Ctrl + URL)
browser.tabs.loadDivertedInBackground
Открывать закладки в новых вкладках.
browser.tabs.loadBookmarksInTabs — TRUE
Открывать закладки их в фоне, не переключаться на них (ФОКУС).
browser.tabs.loadBookmarksInBackground — TRUE

CoolCmd
А можно взять функцию открытия ссылки в фоновой вкладки из этого скрипта?

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name            [ALL] Links Open ALL in NEW BACKGROUND Tab
// @author
// @description     Open ALL links in NEW BACKGROUND tab.
// @downloadURL
// @grant           GM_openInTab
// @homepageURL     https://bitbucket.org/INSMODSCUM/userscripts-scripts/src
// @icon
// @include         http*://*
// @namespace       insmodscum 
// @require         https://greasyfork.org/scripts/12228/code/setMutationHandler.js
// @run-at          document-start
// @updateURL
// @version         1.0
// ==/UserScript==

// needs this in metadata:
// @require         https://greasyfork.org/scripts/12228/code/setMutationHandler.js

// source:
// https://greasyfork.org/en/scripts/12367-open-links-in-new-tab/code

attachHandler([].slice.call(document.getElementsByTagName('a')));

setMutationHandler(document, 'a', function(nodes) {
    attachHandler(nodes);
    return true;
});


function attachHandler(nodes) {
    nodes.forEach(function(node) {
        if (node.target != '_blank') {
            node.onclick = clickHandler;
            node.addEventListener('click', clickHandler);
        }
    });
}


function clickHandler(e) {
    if (e.button > 1)
        return;
    e.preventDefault();
    e.stopPropagation();
    e.stopImmediatePropagation();
    // GM_openInTab(this.href, e.button || e.ctrlKey);
    GM_openInTab(this.href, true);
}


И вставить в этот скрипт, что бы все ссылки на другие сайты открывались в фоновой вкладке.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        Open external link in new tab
// @version     0.1.3
// @namespace   eight04.blogspot.com
// @description This script will open any external link in new tab. Support dynamic content
// @include     http*
// @grant        none
// ==/UserScript==

"use strict";

function getAnchor(element) {
    while (element && element.nodeName != "A") {
        element = element.parentNode;
    }
    return element;
}

document.addEventListener("click", function(e){
    var anchor = getAnchor(e.target);
    if (!anchor || anchor.target || anchor.protocol == "javascript:" || e.isTrusted === false || !anchor.offsetParent || (e.isTrusted == null && !e.detail)) {
        return;
    }
    if (anchor.hostname != location.hostname) {
        anchor.target = "_blank";
    }
});

23-03-2018 11:40:42
Или если можно починить этот скрипт.
https://greasyfork.org/ru/scripts/20697 … ground-tab

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name            [ALL] Links Open EXTERNAL in NEW BACKGROUND Tab
// @author
// @description     Open EXTERNAL links in NEW BACKGROUND tab.
// @downloadURL
// @grant           GM_openInTab
// @homepageURL     https://bitbucket.org/INSMODSCUM/userscripts-scripts/src
// @icon
// @include         http*://*
// @namespace       insmodscum 
// @require
// @run-at          document-start
// @updateURL
// @version         1.0
// ==/UserScript==

// source: http://userscripts-mirror.org/scripts/review/42130

function getDomain(url) {
    var parts  = url.split('//');
    var domain = parts[1];
    if(domain.indexOf('/')) {
        var p  = domain.split('/');
        domain = p[0];
    }
    if(domain.indexOf(':')) {
        var d  = domain.split(':');
        domain = d[0];
    }
    return domain;
}

function TabOpener(a) {
    var clickHandler = function(e) {
        GM_openInTab(a.href, true);
        e.preventDefault();
    };
    a.addEventListener('click', clickHandler, false);
}

var as = document.getElementsByTagName('a');
for (var i = 0, a; a = as[i]; i++) {
    if (a.hasAttribute('href') && !a.href.match(/^javascript:/i) && (a.href.indexOf(getDomain(document.URL)) < 0) ) {
        new TabOpener(a);
    }
}

// // code below does not work. treats subdomains as "external" (e.g. stuff.slashdot.org is external)

// // ==UserScript==
// // @name        Open external link in new tab
// // @version     0.1.3
// // @namespace   eight04.blogspot.com
// // @description This script will open any external link in new tab. Support dynamic content
// // @include     http*
// // @grant        none
// // ==/UserScript==

// "use strict";

// function getAnchor(element) {
    // while (element && element.nodeName != "A") {
        // element = element.parentNode;
    // }
    // return element;
// }

// document.addEventListener("click", function(e){
    // var anchor = getAnchor(e.target);
    // if (!anchor || anchor.target || anchor.protocol == "javascript:" || e.isTrusted === false || !anchor.offsetParent || (e.isTrusted == null && !e.detail)) {
        // return;
    // }
    // if (anchor.hostname != location.hostname) {
        // anchor.target = "_blank";
    // }
// });

Stkvsky

извеняюсь, я думал, что из greasemonkey выкинули функцию openInTab. ну тогда так:

это

Выделить код

Код:

// @grant        none

меняешь на это

Выделить код

Код:

// @grant GM.openInTab
// @grant GM_openInTab

и это

Выделить код

Код:

if (anchor.hostname != location.hostname) {
  anchor.target = "_blank";
}

меняешь на это

Выделить код

Код:

if (anchor.hostname != location.hostname)
{
    e.preventDefault();
    e.stopPropagation();
    e.stopImmediatePropagation();
    if (typeof GM === 'object')
    {
        GM.openInTab(anchor.href, true);
    }
    else
    {
        GM_openInTab(anchor.href, true);
    }
}

CoolCmd
Сделал, большое спасибо.

23-03-2018 16:50:26
А не подскажите, почему ссылка открывается если на ней нажать правой кнопкой?
Отрывается контекстное меню и ссылка открывается в фоновой вкладке
Можно ли это отключить?

Stkvsky

Выделить код

Код:

if (e.button !== 0 || !anchor || anchor.target || anchor.protocol == "javascript:" || e.isTrusted === false || !anchor.offsetParent || (e.isTrusted == null && !e.detail)) {

CoolCmd
Спасибо:)

momo2000 пишет

pointer выручай, сайт внезапно стал с HTML плеером, скрипт не работает даже если перейти на старый плеер с FLASHоригинал<video crossorigin="" src="blob:http://www.ontvtime.ru/fbbc7913-137a-4019-a83a-869d048f88d2" style="min-height: 288px;" class="plyr--setup" width="496" height="288"></video>я добавил min-width: 660px и изменил min-height: 480px<video crossorigin="" src="blob:http://www.ontvtime.ru/13cddbe3-b04e-4bd7-a914-550e960048f9" class="plyr--setup" style="min-width: 660px; min-height: 480px; display: inline;" width="496" height="288"></video>Но каждый раз менятеся ссылка на видеоblob:http://www.ontvtime.ru/fbbc7913-137a-4019-a83a-869d048f88d2

Выделить код

Код:

for  (i  =  0; i  <  document.getElementsByTagName('video').length; i++)  {
  document.getElementsByTagName('video')[i].style.width = '650px'
  document.getElementsByTagName('video')[i].style.height = '450px'
}

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

скрытый текст
cd02f73c-b782-4e5c-a1fe-7e927d30e827.png

pointer
:beer:
вроде так просто, но я сам как только не пытался, ничего не получилось

А можно сделать скрипт, чтобы он выполнял локальные команды.

К примеру при заходе на youtube — youtube-dl -f bestvideo+bestaudio/best %URL (file:///C:\TEMP\youtube-d.exe)
То есть нужно выполнение локальной команды из терминала с текущим URL.


А кнопочку «Download» выдрать отсюда.


Выделить код

Код:

createButton = function() {
        var obj = document.querySelector('#subscribe-button.style-scope.ytd-video-secondary-info-renderer');
        if (obj !== null) {
            // check if the button has already been created
            var btnRow = document.getElementById('bestvd2');
            if (btnRow === null) {
                var bestvd2 = document.createElement("div");
                bestvd2.id = "bestvd2";
                bestvd2.className = "style-scope";

                var bvd2_btn = document.createElement("div");
                bvd2_btn.className = "style-scope bvd2_btn";

                bvd2_btn.style = "background-color: green; border: solid 2px green; border-radius: 2px; color: white; padding: 0px 15px; font-size: 14px; cursor:pointer; height:33px;margin-right: 7px;margin-top: 7px;line-height: 33px;font-weight: 500; display:inline-block;";

                bvd2_btn.appendChild(getSpan("Download", ""));
                bvd2_btn.onclick = bvd2_btn_onclick;

                obj.parentNode.insertBefore(bestvd2, obj);
                bestvd2.appendChild(bvd2_btn);
            }
        }
    };

всем привет ! как в приложение "greasemonkey" для firefox прописать ...или добавить вот этот скрипт ????
в этом совсем не разбираюсь  ! просто достали рекомендуемые каналы , заставки ,и аннотации в "youtube"......   http://splashscreen-full-off-on-youtube.blogspot.nl/2017/05/namespace-urlhttpwww.html 

----------------------------------------------------------------
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("www.youtube.com") {
.ytp-ce-element {
display: none !important;
}
}
----------------------------------------------------------------



http://4pda.ru/forum/index.php?showtopic=163303&st=6860#entry72900946

это не скрипт а стиль
так что вам сюда http://forum.mozilla-russia.org/viewforum.php?id=38
указанное закидывать либо в стайлиш либо в юзерконтент.цсс

Возникла у меня необходимость раскрывать все спойлеры. И ткнули у меня в скрипт-пример:

Выделить код

Код:

// ==UserScript==
// @name        d3
// @namespace   comments
// @include     https://gif.d3.ru/*
// @include     http://gif.d3.ru/*
// @version     1
// @run-at      document-idle
// @grant       none
// ==/UserScript==
function ClickComment() {
  var i, links = document.getElementsByClassName('b-comment__expand-button');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ClickComment, 1000);
}
setTimeout(ClickComment, 1);

Помогите его адаптировать.
В исходном коде сайта есть такая штука (упростил приведя пару вложенных спойлеров):

Выделить код

Код:

<div class="sp-wrap">
<div class="sp-body" title="Содержание">
<h3 class="sp-title">Содержание</h3>
<div class="sp-wrap">
<div class="sp-body" title="Полноразмерные скриншоты">
<h3 class="sp-title">Полноразмерные скриншоты</h3>
...
</div>

Я прописал нужный адрес сайта и пробовал в getElementsByClassName подставлять классы sp-wrap или sp-body - не помогает. Не понимаю. Чего не понимаю - тоже не понимаю) В JavaScript я ни в зуб ногой)

скорее всего проблема в заголовке
то что между // ==UserScript==
там вроде задаётся область действия и другие параметры скрипта.
точнее не скажу  т.к. не пользуюсь
вобщем посмотри в других скриптах этот заголовок а еще лучше поищи скрипт который должен работать на всех сайтах и посмотри что в заголовке там

Вместо http://gif.d3.ru/* и http://gif.d3.ru/* просто звёздочка *

Это я уже всё пробовал - не помогает(

foxfox
Раскрытие комментариев на сайте - давнишняя проблема. Я пробовал 2 скрипта на LJ и они у меня не заработали... Если интересно, вот названия скриптов.
LJ autoexpand
LJ Thread Expander

xrun1 пишет

LJ autoexpand
LJ Thread Expander

Я сделал самостоятельно, по вышеприведенной аналогии.

Выделить код

Код:

// ==UserScript==
// @name        LJ open spoiler
// @namespace   spoilers
// @icon          http://www.livejournal.com/favicon.ico
// @icon64      http://www.livejournal.com/favicon.ico
// @include     http://*.livejournal.com/*
// @include     https://*.livejournal.com/*
// @run-at      document-idle
// @grant       none
// ==/UserScript==

/*

https://forum.mozilla-russia.org/viewtopic.php?pid=731242#p731242

*/

/* --- НАЖИМАЕМ КНОПКУ "Развернуть" --- */
var spoilers = document.getElementsByClassName('ljcut-link-expand');
for (var i = 0; i < spoilers.length; i++) spoilers[i].click();

/* --- УБРАЛ КНОПКУ "Свернуть" --- */
function HideClass() {
var i, elems = document.getElementsByClassName("ljcut-expanded");
for (i = elems.length-1; i >= 0; i--) elems[i].style.display = "none";
setTimeout(HideClass, 1000);
}
setTimeout(HideClass, 1);
xrun1 пишет

foxfox
Раскрытие комментариев на сайте - давнишняя проблема. Я пробовал 2 скрипта на LJ и они у меня не заработали... Если интересно, вот названия скриптов.
LJ autoexpand
LJ Thread Expander

Попробуйте это:

Выделить код

Код:

function ClickComment() {
  var i, links = document.getElementsByClassName('b-leaf-actions-expand');
  for (i = links.length-1; i >= 0; i--) {
    if (links[i].style.display == 'none') continue;
    aa = links[i].getElementsByTagName('a')
    aa[0].click();
  }
  setTimeout(ClickComment, 3000);
}
setTimeout(ClickComment, 10000);

После загрузки страницы в течение 10 сек комментарии должны раскрыться. Но брауз подвисает :(
ps. Возможно, что те скрипты не работают, т.к. сайт сменил код, и они устарели.

foxfox пишет

Это я уже всё пробовал - не помогает(

Надо знать, что за сайт (точнее, код внутри <div class="sp-wrap">
<div class="sp-body" title="Полноразмерные скриншоты">
<h3 class="sp-title">Полноразмерные скриншоты</h3>
...
</div>).
Например, в коде выше развёртывание идёт не при клике по div или h3, а только по ссылке (<a>). Возможно, и у вас надо искать ссылки внутри.

Я начал тренироваться на трекерах. Для рутрекера сработало следующее:

Выделить код

Код:

// ==UserScript==
// @name        d33
// @namespace   comments
// @include     https://rutracker.org/*
// @include     http://rutracker.org/*
// @version     1
// @run-at      document-idle
// @grant       none
// ==/UserScript==
function ClickComment() {
  var i, links = document.getElementsByClassName('sp-head folded');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  /*setTimeout(ClickComment, 1000);*/
}
setTimeout(ClickComment, 1);

Если не закомментить "setTimeout(ClickComment, 1000)", то комменты будут открываться и закрываться со скоростью 1 секунда. Если вместо 1000 поставить 100, то - значительно быстрее. Непонятно зачем сделан рекурсивный вызов функции.

Вообще говоря - всё это жутко интересно.

foxfox пишет

Если не закомментить "setTimeout(ClickComment, 1000)", то комменты будут открываться и закрываться со скоростью 1 секунда. Если вместо 1000 поставить 100, то - значительно быстрее. Непонятно зачем сделан рекурсивный вызов функции.

Вообще говоря - всё это жутко интересно.

Дело в том, что, например, на том же LJ комменты подгружаются динамически, т.е. послезагрузки страницы срабатывает скрипт GM, а комменты загружаются чуть позже. Из-за этого скрипт не раскрывает их, если выполняется сразу после загрузки страницы. Можно, конечно, поставить 10000 и вызывать функцию 1 раз. Но у меня в коде выше не зря сделано "if (links[i].style.display == 'none') continue;" - если ссылка "развернуть" скрыта, значит, комментарий раскрыть, и скрипт по ней не щёлкает.

pointer пишет

Дело в том, что, например, на том же LJ комменты подгружаются динамически, т.е. послезагрузки страницы срабатывает скрипт GM, а комменты загружаются чуть позже. Из-за этого скрипт не раскрывает их, если выполняется сразу после загрузки страницы.

У меня другой опыт. Даже при setTimeout - 1 всё спойлеры открываются.

Например на Youtube комментарии появляются при скроле вниз и ниже приведенный код работает.
Но есть очень неприятный баг. Так как скрипт отрабатывает каждые setTimeout — 1-6000 мс, то соответственно фокус смещается в другое место. То есть если мы нажмем в меню и начнем выбирать какую то функцию, например размер 1080p, то через секунду получим смещение фокуса, то есть закрытие этого меню, так как фактически мышка уже нажата в другом месте экрана.
Побороть это можно двумя способами. При открытии видео не скролить вниз, чтобы комментарии не подгрузились, выбрать в меню, что надо и продолжать. И второй способ это увеличением setTimeout до 6-10 секунд, но эта пауза тоже не очень удобна.

Было бы очень интересно, чтобы это неудобство как то обошли.


Выделить код

Код:

/*
https://forum.mozilla-russia.org/viewtopic.php?pid=733851#p733851
*/
// ==UserScript==
// @name        Youtube comments open spoiler  [New Design]
// @namespace   comments
// @icon           https://www.youtube.com/favicon.ico
// @icon64        https://www.youtube.com/favicon.ico
// @description    Разворачиваем всё комментарии
// @include     https://youtube.com/*
// @include     http://youtube.com/*
// @include     https://www.youtube.com/*
// @include     http://www.youtube.com/*
// @version     1
// @run-at      document-end
// @grant       none
// ==/UserScript==

/* ----- "Читать дальше" ----- */
function ReadMoreComments() {
/* ----- Выбрали кнопку [Читать дальше] и смотрим её класс ----- */
  var i, links = document.getElementsByClassName('more-button style-scope ytd-comment-renderer');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ReadMoreComments, 6000);
}
setTimeout(ReadMoreComments, 1);

/* ----- "Показать ответы"  ----- */
function ExpandComments() {
  var i, links = document.getElementsByClassName('more-button style-scope ytd-comment-replies-renderer');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ExpandComments, 6000);
}
setTimeout(ExpandComments, 1);

leshiy_odessa пишет: Но есть очень неприятный баг. Так как скрипт отрабатывает каждые setTimeout — 1-6000 мс, то соответственно фокус смещается в другое место. То есть если мы нажмем в меню и начнем выбирать какую то функцию, например размер 1080p, то через секунду получим смещение фокуса, то есть закрытие этого меню, так как фактически мышка уже нажата в другом месте экрана.

если вручную то да если программно то пофиг где находится элемент и виден ли он и где фокус, главное чтоб он вообще существовал и клик будет именно по нему.
есличто я про element.click()

Почему alert  выдаёт только переменную leto?
Остальные он чё, забыл ?

Выделить код

Код:

var leto =new Date().getFullYear()
var Mes =new Date().getMonth()
var Den =new Date().getDate()
var Chas =new Date().getHours()
var Minuta =new Date().getMinutes()
var Secunda=new Date().getSeconds()
// выводим...
alert (leto,Mes+1,Den,Chas,Minuta,Secunda)

selevo

Выделить код

Код:

let l=new Date().getFullYear(), Mes=new Date().getMonth(), D=new Date().getDate(), C=new Date().getHours(), M=new Date().getMinutes(), S=new Date().getSeconds();
let all = l +'; ' + Mes + '; ' + D + '; ' + C + '; ' + M + '; ' + S;
// выводим...
alert(all);

Благодарю,с таким извратом заработало, странно что    в  html   документе javascript нормально выводит
может здесь какой-то  урезанный alert ?
знак  ; я правда не ставил мне   надо  формат: 2018522165637
:-)

Возможно ли (и как?) можно сделать при помощи Greasemonkey взаимодействие с расширением Brief для кастомизации вывода RSS ленты в нём?
Пример приводил в этом посте

Никто еще не придумал скрипт для Rutube? , типа Inject2Download ?. НLS брать....

Доброе время, форумчане!
CB у меня в [firefox] 60-й версии отвалились, но любимое хочется сохранить. Можно ли сделать 2 скрипта из кнопок?
https://forum.mozilla-russia.org/viewtopic.php?pid=740043#p740043

скрытый текст

Выделить код

Код:

// Автоматически открывать папки закладок на панели закладок, от 22.08.2016. ...............
addEventListener('mouseover', (e, targ = e.target)=> {
   if ( targ.getAttribute('type') != 'menu'
        || (document.querySelectorAll('[open^="true"]').length > 0        
        && !document.getElementById('PlacesChevron').hasAttribute('open')) 
        ) return;

   document.getElementById('PlacesChevronPopup').hidePopup();
      
   setTimeout(()=> { 
      if ( !targ.f ) try { targ.children[0].showPopup(targ, -1, -1, 'popup', 'bottomleft', 'topleft') } catch(e) {};
   }, 500, targ.f = false);
   targ.onmouseleave =()=> { targ.f = true; targ.onmouseleave = null };
   
}, false, document.getElementById('PlacesToolbar'));


Здесь вариант колесом мышки интересует.
https://forum.mozilla-russia.org/viewtopic.php?pid=661897#p661897
скрытый текст

Выделить код

Код:

// Очистить панель поиска прокруткой колёсиком мыши на панели поиска, от 19.09.2014. ..............
(function () { 
   var searchbar = document.getElementById("searchbar");
   if ( !searchbar ) return;
 
   addEventListener('DOMMouseScroll', function(){
      searchbar.textbox.value = '';
   }, false, searchbar ); 
})();


P.S. Пробовал просто перенести код в js - у меня не получилось.:(

xrun1 пишет: Можно ли сделать 2 скрипта из кнопок?

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

у меня в 60 esr работают обе кнопки

Выделить код

Код:

// Очистить панель адреса прокруткой колёсиком мыши ....................................................................................................
(function () { 
   var urlbar = document.getElementById("urlbar");
   if ( !urlbar ) return;
   addEventListener('DOMMouseScroll', function(){urlbar.value = '';}, false, urlbar ); 
})();

и

Выделить код

Код:

// Очистить панель поиска прокруткой колёсиком мыши на панели поиска, от 19.09.2014. ..............
(function () { 
   var searchbar = document.getElementById("searchbar");
   if ( !searchbar ) return;
 
   addEventListener('DOMMouseScroll', function(){
      searchbar.textbox.value = '';
   }, false, searchbar ); 
})();

нуу, соответственно и СВ работает. по-моему такой - custom_buttons-0.0.5.8.9-fixed8 с вот этим костылем https://forum.mozilla-russia.org/viewtopic.php?pid=757088#p757088

okkamas_knife
Спасибо за пояснение. Жаль.
sonyas75
У меня CB отвалился после обновления [firefox] с 59.0.3 на 60. Вычистил реестр, пробовал установить начисто, с разными костылями и версиями CB. Даже проверил чистую установку 60-й на виртуалке Win7x32. Не работает. Как  у других (не ESR) работает - удивляюсь.
Где-то здесь скачал портабельную 60-ю, кнопки работают, но пользоваться ей не выход.
Сделал 4 кнопки на CSS, 3 из них - запуск сторонних приложений. Пожалуй, 1-ю хотелку свою можно сделать, надо спросить в теме про настройки внешнего вида, а про 2-ю забыть.

Для версий [firefox] до Quantum было удобное расширение "Space Next". Кликаешь клавишей "пробел" на форумах или в поиске - страничка прокручивается на один экран, а по достижении конца переходит на следующую страницу, если есть. Была одна "закавыка", так и не собрался тогда написать автору - на ru-board переход на следующую страницу срабатывал только при клике на кнопку. А в поиске или других форумах всё работало отлично.
Открыл, посмотрел - но моих знаний явно не хватает для редактирования js из этого расширения, да и файл там не маленький.
Вот ссылки
https://yadi.sk/d/xcVWd6Ww3Y23nn
https://addons.mozilla.org/en-US/firefox/addon/space-next/
Вдруг кто-то захочет поковырять... Лично мне, было очень удобно откинувшись в кресле просто кликать на пробел для перехода на следующую страницу читаемого форума или страницы поиска.

Ребята, вы бы не могли помочь пожалуйста
если не сложно создать скрипт который превращает текст начинающийся с @ (название аккаунта инстаграм) в ссылку на инстаграм профиль?

Например:

Instagram:
@masta_dilemma  →  https://www.instagram.com/masta_dilemma
@tomashlukach     →  https://www.instagram.com/tomashlukach
@nikamanika_      →   https://www.instagram.com/nikamanika_

Я не знаю точный формат ссылок в inst, но если анкор начинается с @, то вот:

Выделить код

Код:

for (var i = 0; i < document.links.length; i++) {
  if (document.links[i].innerHTML.charAt(0)=="@") {
    document.links[i].innerHTML = document.links[i].href;
  }
}
pointer пишет

Я не знаю точный формат ссылок в inst

Вот например пишет человек название своего инстаграм аккаунта: @myrziko
А можно ли сделать чтобы это название становилось ссылкой на https://www.instagram.com/myrziko

Stkvsky,  а мой код выше-то работает?

Если нет, то напишите тут полный формат ссылки вот так:
<a href="...">@...</a>
В общем, всё, что между тегами A/A.

pointer
Не, не работает. Я просто не пойму правильно ли вы меня поняли.
Я имею ввиду чтобы на всех сайтах где написан текст названия аккаунта инстаграм (@названиеаккаунта)
становился ссылкой на этот аккаунт (https://www.instagram.com/названиеаккаунта)
Я не пойму какой полный формат какой ссылки.

Stkvsky пишет

Я имею ввиду чтобы на всех сайтах где написан текст названия аккаунта инстаграм (@названиеаккаунта)
становился ссылкой на этот аккаунт (https://www.instagram.com/названиеаккаунта)

Это я понял. Полный формат - просто пример ссылки: всё, что между тегами <a...></a>. С атрибутами тега, конечно (href и пр.).

pointer
Так для разных аккаунтов это же будут разные ссылки.
Я имею ввиду чтобы все слова с названиями аккаунтов на странице становились ссылками на эти аккаунты в инстаграм.
То есть из любого слова начинающегося с @ (например: @masha) делать ссылку на инсиаграм аккаунт (https://www.instagram.com/masha)

Доброго дня всем.
Можно ли как то проверить RU AdList JS Fixes?
Киньте ссылку (если не затруднит) на сайт где явно видна работа скрипта.

Rag
В поиск яндекса - контекстная реклама.  Будет 2-4 блока помеченных "реклама".

oleg.sgh
Спасибочки!
А то я смотрю что со скриптом что без вроди одно и тоже.
Ан нет,работает - режет рекламу.

Ребята, помогите пожалуйста немного изменить скрипт для ютуба.
Он перематывает видео колесиком мышки при зажатом шифте.
Можно ли отключить шифт, чтобы перематывалось только колесиком?

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name         YouTube Video Speed & Seek Mouse Control
// @namespace    YPSSMC
// @version      4.0
// @description  Dynamically adjust video playback speed & seeking instantly with your mousewheel, no more need to go through player menus every time.
// @run-at       document-ready
// @include      http://www.youtube.com/* 
// @include      https://www.youtube.com/*
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @require      https://greasyfork.org/scripts/12284-jquery-mousewheel-3-1-13/code/jQuery%20Mousewheel%203113.js
// @require      https://greasyfork.org/scripts/14098-bililiterange-js/code/bililiteRangejs.js?version=88786
// @require      https://greasyfork.org/scripts/14097-jquery-simulate/code/jQuery%20Simulate.js?version=88785
// @require      https://greasyfork.org/scripts/14096-jquery-simulate-extended-plugin-1-3-0/code/jQuery%20Simulate%20Extended%20Plugin%20130.js?version=88784
// @require      https://greasyfork.org/scripts/14095-jquery-simulate-key-sequence-plugin-1-3-0/code/jQuery%20Simulate%20Key-Sequence%20Plugin%20130.js?version=88783
// @author       drhouse
// @icon         https://s.ytimg.com/yts/img/favicon-vfldLzJxy.ico
// ==/UserScript==

$(document).ready(function () {
    function getPlaybackRate() {
        var v = $('.video-stream')[0];
        return v.playbackRate;
    }

    var speed = getPlaybackRate().toFixed(2);
    var isShift = false;
    var isAlt = false;
    var ytplayer = document.getElementById("movie_player");

    $(ytplayer).prepend('<div id="rate">' + speed + ' </div>');
    $("#rate").css("z-index","999");
    $("#rate").css('position', 'absolute');
    $("#rate").css('top', '0');
    $("#rate").css('right', '0');

    function setPlaybackRate(r) {
        var v = $('.video-stream')[0];
        if (v === undefined || v.playbackRate === undefined) {
            setTimeout(function(){setPlaybackRate(r);}, 1000);
            return;
        }
        v.playbackRate = r;
    }

    $(window.document).mousewheel(function(e, deltaX) {
        //Seek | Shift+WheelUp/Down
        if (e.shiftKey) {
            if (deltaX>0) {
                if (location.href.toString().indexOf("embed") == -1) { //youtube.com
                    var ytplayer = document.getElementById("movie_player");
                    var time = ytplayer.getCurrentTime();
                    ytplayer.seekTo(time+5, true);
                }
                else{$('.video-stream').simulate("key-sequence", { sequence: "l" });} //embed
            } else {
                if (location.href.toString().indexOf("embed") == -1) { //youtube.com
                    var ytplayer = document.getElementById("movie_player");
                    var time = ytplayer.getCurrentTime();
                    ytplayer.seekTo(time-5, true);
                }
                else{$('.video-stream').simulate("key-sequence", { sequence: "j" });} //embed
            }
            e.preventDefault();
        }

        //Speed | Alt+WheelUp/Down
        if (e.altKey) {
            var step = 0.25;
            if (e.deltaY<0) {         
                var speed = Math.max(0.0,(getPlaybackRate()-step).toFixed(2));
                setPlaybackRate(speed);
            } else { 
                var speed = Math.min(8,(getPlaybackRate()+step).toFixed(2));
                setPlaybackRate(speed);
            }
            e.preventDefault();
            $("#rate").remove();
            var speed = speed.toFixed(2);
            var ytplayer = document.getElementById("movie_player");
            $(ytplayer).prepend('<div id="rate">' + speed + ' </div>');
            $("#rate").css("z-index","999");
            $("#rate").css('position', 'absolute');
            $("#rate").css('top', '0');
            $("#rate").css('right', '0');

        }
    });
})

Stkvsky
Как-то так: закомментируем 2 строки, где включается проверка shift и заканчивается. Можно убрать секцию Alt. Там всё понятно, разберёшься, если захочешь почистить. ;)

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name         YouTube Video Speed & Seek Mouse Control
// @namespace    YPSSMC
// @version      4.0
// @description  Dynamically adjust video playback speed & seeking instantly with your mousewheel, no more need to go through player menus every time.
// @run-at       document-ready
// @include      http://www.youtube.com/* 
// @include      https://www.youtube.com/*
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @require      https://greasyfork.org/scripts/12284-jquery-mousewheel-3-1-13/code/jQuery%20Mousewheel%203113.js
// @require      https://greasyfork.org/scripts/14098-bililiterange-js/code/bililiteRangejs.js?version=88786
// @require      https://greasyfork.org/scripts/14097-jquery-simulate/code/jQuery%20Simulate.js?version=88785
// @require      https://greasyfork.org/scripts/14096-jquery-simulate-extended-plugin-1-3-0/code/jQuery%20Simulate%20Extended%20Plugin%20130.js?version=88784
// @require      https://greasyfork.org/scripts/14095-jquery-simulate-key-sequence-plugin-1-3-0/code/jQuery%20Simulate%20Key-Sequence%20Plugin%20130.js?version=88783
// @author       drhouse
// @icon         https://s.ytimg.com/yts/img/favicon-vfldLzJxy.ico
// ==/UserScript==

$(document).ready(function () {
    function getPlaybackRate() {
        var v = $('.video-stream')[0];
        return v.playbackRate;
    }

    var speed = getPlaybackRate().toFixed(2);
    var isShift = false;
    var isAlt = false;
    var ytplayer = document.getElementById("movie_player");

    $(ytplayer).prepend('<div id="rate">' + speed + ' </div>');
    $("#rate").css("z-index","999");
    $("#rate").css('position', 'absolute');
    $("#rate").css('top', '0');
    $("#rate").css('right', '0');

    function setPlaybackRate(r) {
        var v = $('.video-stream')[0];
        if (v === undefined || v.playbackRate === undefined) {
            setTimeout(function(){setPlaybackRate(r);}, 1000);
            return;
        }
        v.playbackRate = r;
    }

    $(window.document).mousewheel(function(e, deltaX) {
        //Seek | Shift+WheelUp/Down
//        if (e.shiftKey) {
            if (deltaX>0) {
                if (location.href.toString().indexOf("embed") == -1) { //youtube.com
                    var ytplayer = document.getElementById("movie_player");
                    var time = ytplayer.getCurrentTime();
                    ytplayer.seekTo(time+5, true);
                }
                else{$('.video-stream').simulate("key-sequence", { sequence: "l" });} //embed
            } else {
                if (location.href.toString().indexOf("embed") == -1) { //youtube.com
                    var ytplayer = document.getElementById("movie_player");
                    var time = ytplayer.getCurrentTime();
                    ytplayer.seekTo(time-5, true);
                }
                else{$('.video-stream').simulate("key-sequence", { sequence: "j" });} //embed
            }
            e.preventDefault();
//        }

        //Speed | Alt+WheelUp/Down
        if (e.altKey) {
            var step = 0.25;
            if (e.deltaY<0) {         
                var speed = Math.max(0.0,(getPlaybackRate()-step).toFixed(2));
                setPlaybackRate(speed);
            } else { 
                var speed = Math.min(8,(getPlaybackRate()+step).toFixed(2));
                setPlaybackRate(speed);
            }
            e.preventDefault();
            $("#rate").remove();
            var speed = speed.toFixed(2);
            var ytplayer = document.getElementById("movie_player");
            $(ytplayer).prepend('<div id="rate">' + speed + ' </div>');
            $("#rate").css("z-index","999");
            $("#rate").css('position', 'absolute');
            $("#rate").css('top', '0');
            $("#rate").css('right', '0');

        }
    });
})


UPD: Только при этом прокрутка страницы не работает. Так что лучше оставить shift, ИМХО.

xrun1
Ага, спасибо большое.

xrun1 пишет

UPD: Только при этом прокрутка страницы не работает. Так что лучше оставить shift, ИМХО.

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

del

Здравствуйте
С недавних пор Яндекс включил на своем сайте "Яндекс новости" фичу которая напрягает своей навязчивостью.
Это автопрокрутка

Очень стало неудобно.
Я читаю несколько версий по теме из разных изданий, открываю и читаю страницу любой конкретной новости. Там есть список ссылок под заголовком "Подробнее о событии"
Кликаю по любой из этих ссылок, она открывается в новом окне. потом возвращаюсь на исходную страницу, чтобы открыть другое СМИ, но страница  уже прокручена вниз, чтобы я увидел и прочитал неинтересные мне новости.
Приходится каждый раз листать вверх, чтобы отыскать первоначальную новость.

Думаю что выполняется какой то скрипт на яндекс новостях.
Может быть кто-нибудь посоветует скрипт способный заблокировать этот скрипт с автопрокруткой?

leex пишет

Кликаю по любой из этих ссылок

кликай средней кнопкой мыши и будет тебе счастье

leex похоже на глюк йандекса. вот это попробуй:

Выделить код

Код:

// ==UserScript==
// @name     CoolCmd
// @version  1
// @match    https://news.yandex.ru/*
// @grant    none
// @run-at   document-start
// ==/UserScript==
'use strict';
window.addEventListener(
  'click',
  e =>
  {
    if (e.button === 0
    && !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey
    && e.target.closest('a[href].link_agency'))
    {
      e.stopImmediatePropagation();
      e.stopPropagation();
    }
  },
  true
);

CoolCmd
Действительно это был глюк яндекса.
Так было около двух месяцев во всех браузерах.
Я задавал этот вопрос в разных темах.
А с сегодняшнего дня этот глюк исчез.
Видимо кто-то из яндекса читает наш форум.

Большое спасибо :)

Всем здравствуйте! Как реализовать после авто обновления страницы location.reload(), автоматическое подтверждение кнопки "Отправить заново" во всплывающем окне ? Спасибо.
444.jpg

taniks можно попробовать в форме на предыдущей странице заменить post на get. иногда прокатывает.

CoolCmd пишет

заменить post на get

Мне бы пример, а то с этим языком мало знаком, мне кажется, что это не прокатит.

Делит

Подскажи пожалуйста, можно ли скриптом указать конкретное увеличение страницы (например 150%) для конкретного сайта?

в фф17 можно было. в новых фиг знает
зы а еще масштаб для конкретной страницы можно указать стилем.

А как это можно сделать стилем?

а набрать в гугле css+масштабирование тяжело?

Stkvsky
для масштабирования существуют расширения браузера, смотри на amo

okkamas_knife пишет

а набрать в гугле css+масштабирование тяжело?

Это я сделал сразу как прочитал, но откуда я могу знать что это именно тот способ о котором ты говоришь?

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

09-02-2019 14:46:34
Написал бы уже загугли css+масштабирование

Подскажите кто-нибудь есть ли скрипт или расширение "Shazam прямо в браузере". Ничего не нашел подходящего... Буду очень признателен. )

На сайте pinterest.ru не открываются ссылки в новой вкладке при нажатии СКМ
При нажатии СКМ ссылка с картинкой открывается в текущей вкладке (переход на страницу с картинкой), как если бы нажал на нее ЛКМ.
Проверял в безопасном режиме без дополнений и на чистом профиле с настройками по умолчанию.
В других браузерах на базе Хрома работает правильно (СКМ по картинке = новая вкладка)

Я думаю что это глюк pinterest.ru а не FF

Можно ли попросить сделать скрипт для этого сайта?
Чтобы ссылка на этом сайте открывалась в новой вкладке по нажатию СКМ

https://greasyfork.org/ru/scripts/39899 … in-new-tab

Благодарю!

Нашел скрипт который блокирует автовоспроизведение и загрузку видео на ютубе. (видео загружается сразу с заставкой)
Вопрос такой, можно ли ускорить его работу?
Сейчас сначала загружается страница, а на месте видео темный экран и только через секунды две появляется уже видео(заставка).

скрытый текст

Выделить код

Код:

// ==UserScript==
// @author       @leoncastro
// @namespace    https://github.com/leoncastro
// @name         youtube-stop-autostart
// @version      0.02
// @description  Stop autostart videos on youtube
// @icon         http://s.ytimg.com/yts/img/favicon_48-vfl1s0rGh.png
// @include      /^(https?:)?\/\/(www\.)?youtube\.com\/*.*/
// @compatible   firefox+greasemonkey
// @compatible   chrome+tampermonkey
// @grant        none
// @run-at       document-end
// ==/UserScript==
// v0.01: document.querySelector('#movie_player').cueVideoByPlayerVars(document.querySelector('#movie_player').getVideoData());
// v0.02:
function ytStopVideo(i){i&&(i=document.querySelector(i))&&i.cueVideoByPlayerVars(i.getVideoData())}
if(/^\/(channel|user)\//i.exec(location.pathname)) // '/channel/CHANNEL_ID' or '/user/UserName'
 (new MutationObserver(function(m){ytStopVideo('#c4-player')})).observe(document.querySelector('#upsell-video'),{childList:true});
else // '/watch?v=VIDEO_ID'
 ytStopVideo('#movie_player');


Была такая же функция (блокировки видео) в дополнении magic actions там она работала сразу же при загрузке видео,
но вот с очередным обновлением ютуба (сто лет ему жизни) она отвалилась.

Stkvsky пишет

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

Переходите на Enhancer for YouTube™

leshiy_odessa
Ставил уже два раза. Он не останавливает загрузку(буферизацию) видео.
А это все что мне нужно.

Подскажите, как это расширение использует скрипты? Вставляет в код страницы что-то типа:

Выделить код

Код:

<script src="https://greasyfork.org/scripts/...user.js"></script>

?
Если можно, опишите подробнее.

Ребята подскажите пожалуйста как использовать этот скрипт?
Он должен открывать ссылку в боковой панели

Выделить код

Код:

var links, link;
links = document.getElementsByTagName('A');
for (var i = --links.length; i >= 0; i--) if (links[i].href != '') {
  link = links[i].getAttribute('href');
  if ((links[i].onclick == null) && (link.protocol != 'javascript:') && (link.protocol != 'data:'))
    links[i].setAttribute('href', 'javascript:document.location="' + link + '"');
};

Куда его нужно вставить?
Взял отсюда
https://forum.mozilla-russia.org/viewto … 90#p717290
Тогда вроде работал, давно было дело, забыл.

Подскажите, как должен выглядеть этот скрипт - https://forum.mozilla-russia.org/viewto … 47#p740347 , если любая ссылка для любого домена должна открываться в новой вкладке для щелчку ЛКМ?

Palych177 не проверял

Выделить код

Код:

// ==UserScript==
// @name        Palych177
// @namespace   CoolCmd
// @match       http://*/*
// @match       https://*/*
// @version     1
// @grant       none
// ==/UserScript==
'use strict';
document.addEventListener('click', e =>
{
    const a = e.target.closest('a[href^="http"]:not([target])');
    if (a)
    {
        a.target = "_blank";
    }
});

Не работает, увы...

А у кого есть скрипт, чтобы каждая ссылка открывалась в новой вкладке по ЛКМ, и так, как определено в ссылке - по щелку колесика?

Palych177 тогда так:

Выделить код

Код:

// ==UserScript==
// @name        Palych177
// @namespace   CoolCmd
// @match       http://*/*
// @match       https://*/*
// @version     2
// @grant       none
// ==/UserScript==
'use strict';
document.addEventListener('click', e =>
{
  const a = e.target.closest('a[href]:not([target])');
  if (a)
  {
    a.target = "_blank";
  }
});

CoolCmd

А так просто бомба! Спасибо!

А можно ли сюда добавить функцию, чтобы по щелчку колеса прокрутки ссылка открывалась так, как определено в самой ссылке?

Подскажите пожалуйста
Как сделать чтобы скрипт работал на странице с таким адрессом?
moz-extension://8444b263-d8ba-422a-bd4f-87a39d454a39/data/index.html

04-07-2019 12:28:46
Вставляю
// @include     moz-extension://*/*/
но не работает

Stkvsky
расширение (любое) в принципе не имеет доступа к страницам другого расширения

CoolCmd
Ясно, спасибо.

MyTimeKill пишет

Приветствую. Помогите со скриптом.
Нужно, чтобы при авторизации убиралась галочка с чекбокса "Запомнить?" и отмечался "Скрытый вход?"

Здесь.

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Наверно так:
document.getElementById('auth-remember').checked = false;
document.getElementById('auth-hidden').checked = true;

Доброго времени суток.
Возможно кто поможет со следующей просьбой.
Есть сайт

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Можно ли сделать так, чтобы при открытии оного по умолчанию выбиралось "По дате релиза" (выбирается в выпадайке, которая справа сверху)
Заранее благодарен.

З.Ы. Я новичок в скрипто-писании, потому буду благодарен за полный код скрипта, если конечно такой найдется.

Acid Crash пишет

Доброго времени суток.
Возможно кто поможет со следующей просьбой.
Есть сайт

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Можно ли сделать так, чтобы при открытии оного по умолчанию выбиралось "По дате релиза" (выбирается в выпадайке, которая справа сверху)
Заранее благодарен.

З.Ы. Я новичок в скрипто-писании, потому буду благодарен за полный код скрипта, если конечно такой найдется.

var jsso = document.querySelector('.js-sort-options');
jsso.value = 'released';//По дате релиза
//jsso.value = 'position';//Если по популярности
//jsso.value = 'pubdate';//Если по дате добавления
//jsso.value = 'title';//Если по названию
//jsso.value = 'rating';//Если по рейтингу

questman пишет

var jsso = document.querySelector('.js-sort-options');
jsso.value = 'released';//По дате релиза
//jsso.value = 'position';//Если по популярности
//jsso.value = 'pubdate';//Если по дате добавления
//jsso.value = 'title';//Если по названию
//jsso.value = 'rating';//Если по рейтингу

Спасибо. Правда не до конца работает.
Сам элемент выпадайки меняется, но вот содержимое основного блока не обновляется в соотвествии с тем, что выбрано (остается то, что по умолчанию)...

Acid Crash пишет
questman пишет

var jsso = document.querySelector('.js-sort-options');
jsso.value = 'released';//По дате релиза
//jsso.value = 'position';//Если по популярности
//jsso.value = 'pubdate';//Если по дате добавления
//jsso.value = 'title';//Если по названию
//jsso.value = 'rating';//Если по рейтингу

Спасибо. Правда не до конца работает.
Сам элемент выпадайки меняется, но вот содержимое основного блока не обновляется в соотвествии с тем, что выбрано (остается то, что по умолчанию)...

Я уже понял, позже.
Для меня сложно вспоминать,очень давно кодил.
Может кто подскажет.

Acid Crash пишет

Сам элемент выпадайки меняется, но вот содержимое основного блока не обновляется в соотвествии с тем, что выбрано (остается то, что по умолчанию)

Попробуйте :

// ==UserScript==
// @run-at      document-idle
// ==/UserScript==

И вообще выкладывайте весь код и только потом задавайте вопрос по нему.

leshiy_odessa пишет
Acid Crash пишет

Сам элемент выпадайки меняется, но вот содержимое основного блока не обновляется в соотвествии с тем, что выбрано (остается то, что по умолчанию)

Попробуйте :

// ==UserScript==
// @run-at      document-idle
// ==/UserScript==

И вообще выкладывайте весь код и только потом задавайте вопрос по нему.

Извиняюсь.
Сделал вот так, но изменений по сравнению с предыдущим нет(

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name     Unnamed Script 150783
// @version  1
// @match https://nichosee.com/*
// @run-at      document-idle
// @grant    none
// ==/UserScript==


var jsso = document.querySelector('.js-sort-options');
jsso.value = 'released';//По дате релиза
//jsso.value = 'position';//Если по популярности
//jsso.value = 'pubdate';//Если по дате добавления
//jsso.value = 'title';//Если по названию
//jsso.value = 'rating';//Если по рейтингу

Есть такой код из java скрипта загружаемой страницы. Язык по умолчанию там — English. Как его подменить на Russian и при этом до загрузки страницы? Ну то есть чтобы сработало.

Выделить код

Код:

language_map: {
    zh_CN: 'Chinese (Simplified)',
    zh_TW: 'Chinese (Traditional)',
    ca: 'Catalan',
    da: 'Danish',
    en: 'English',
    eu: 'Euskera (Basque)',
    fr: 'French',
    de: 'German',
    it: 'Italian',
    es: 'Spanish',
    ja: 'Japanese',
    nb: 'Norwegian (Bokmal)',
    nn: 'Norwegian (Nynorsk)',
    fa: 'Persian (Farsi)',
    pl: 'Polish',
    pt_BR: 'Portuguese (Brazil)',
    ru: 'Russian',
    sl: 'Slovenian',
    sv: 'Swedish',
    tr: 'Turkish'
    },

    render_language: function (value) {
    if (!value) {
        return Proxmox.Utils.defaultText + ' (English)';
    }
    var text = Proxmox.Utils.language_map[value];
    if (text) {
        return text + ' (' + value + ')';
    }
    return value;
    },

    language_array: function() {
    var data = [['__default__', Proxmox.Utils.render_language('')]];
    Ext.Object.each(Proxmox.Utils.language_map, function(key, value) {
        data.push([key, Proxmox.Utils.render_language(value)]);
    });

    return data;
    },

leshiy_odessa ты хочешь, чтобы весь текст на странице был на русском? вышеприведенный код эти не занимается.

CoolCmd пишет

ты хочешь, чтобы весь текст на странице был на русском?

Это свичер языка. Я хочу чтобы return Proxmox.Utils.defaultText + ' (English)'; ➜ return Proxmox.Utils.defaultText + ' (Russian)';

leshiy_odessa
Нужна ссылка на сайт.

sn260591 пишет

Нужна ссылка на сайт.

Это веб интерфейс управления Proxmox (виртуальные машины) которая имеет локальный IP адрес.

Накидайте хоть какой то код, а я методом перебора и собственных мозгов что-то да наваяю. Спасибо.

Acid Crash пишет

Есть сайт https://nichosee.com/
Можно ли сделать так, чтобы при открытии оного по умолчанию выбиралось "По дате релиза" (выбирается в выпадайке, которая справа сверху)

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        Acid Crash
// @namespace   CoolCmd
// @match       https://nichosee.com/
// @version     1
// @run-at      document-start
// @grant       none
// ==/UserScript==
'use strict';
/*
    // Выполнить ДО обработчика DOMContentLoaded страницы.
    window.shuffle.options.initialSort = {
        reverse: true,
        by: function(e) {
            return e.getAttribute('data-released');
        }
    };
*/
// Выполнить ПОСЛЕ обработчика DOMContentLoaded страницы.
window.addEventListener('DOMContentLoaded', () => {
    const s = document.getElementsByClassName('js-sort-options')[0];
    s.value = 'released';
    s.dispatchEvent(new Event('change', {bubbles: true}));
});


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

25-07-2019 18:35:26

leshiy_odessa пишет

Накидайте хоть какой то код, а я методом перебора и собственных мозгов что-то да наваяю. Спасибо.

менять код "методом перебора" можно до конца жизни. нужен полный код js-файла.

CoolCmd пишет

менять код "методом перебора" можно до конца жизни. нужен полный код js-файла.

Нет проблем — https://pastebin.com/15dTMtjj

Или вот вся папка, но на мой дилетантский взгляд выбор языка только в — \javascript\proxmox-widget-toolkit\proxmoxlib.js

CoolCmd пишет

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

Приветствую.
Прыгающие картинки действительно не так критично в данной ситуации.
Большое спасибо.

leshiy_odessa
непонятно как все это дело загружается и в каком фрейме. вот вариант решения в лоб. исправь @match на свой адрес. запускать нужно в tampermonkey, в greasemonkey режим @grant:none поломан.

Выделить код

Код:

// ==UserScript==
// @name        leshiy_odessa
// @namespace   CoolCmd
// @match       http://localhost:8080/*
// @version     1
// @run-at      document-start
// @grant       none
// ==/UserScript==
document.addEventListener('DOMContentLoaded', () => {
    'use strict';
    if (window.Proxmox && Proxmox.Utils) {
        Proxmox.Utils.render_language = function(value) {
            if (!value) {
                return Proxmox.Utils.defaultText + ' (Russian)';
            }
            var text = Proxmox.Utils.language_map[value];
            if (text) {
                return text + ' (' + value + ')';
            }
            return value;
        };
    }
}, true);

CoolCmd
Нет, не сработало (Tampermonkey). Фрейма там нет, а есть слой из DIV.

Я в KeePass закостылил — {TAB}{TAB}{TAB}{DOWN}{END}{DELAY 1000}{TAB}{TAB}{TAB}{DOWN}{UP}{UP}{UP}{ENTER}{DELAY 1000}{USERNAME}{DELAY 500}{TAB}{PASSWORD}{ENTER}

То есть клавиатурой спускаемся в выбор языка, выбираем самый последний язык в списке(END), не Russian потому что он уже может стоять, потом происходит обновление окна, язык меняется и уже от последнего языка поднимается на Russian.

Может такой же костыль на скрипте? Хотя эта идея совсем ужасна, костыль-костылей.

leshiy_odessa попробуй этот вариант и скопируй красный текст из консоли (F12).

Выделить код

Код:

// ==UserScript==
// @name        leshiy_odessa
// @namespace   CoolCmd
// @match       http://localhost:8080/*
// @version     2
// @run-at      document-start
// @grant       none
// ==/UserScript==
(() => {
    'use strict';
    console.error('!!!' + location.href);
    document.addEventListener('DOMContentLoaded', () => {
        console.error('!!!DOMContentLoaded');
        Proxmox.Utils.render_language = function(value) {
            if (!value) {
                return Proxmox.Utils.defaultText + ' (Russian)';
            }
            var text = Proxmox.Utils.language_map[value];
            if (text) {
                return text + ' (' + value + ')';
            }
            return value;
        };
    }, true);
    window.addEventListener('load', () => {
        console.error('!!!load');
        Proxmox.Utils.render_language = function(value) {
            if (!value) {
                return Proxmox.Utils.defaultText + ' (Russian)';
            }
            var text = Proxmox.Utils.language_map[value];
            if (text) {
                return text + ' (' + value + ')';
            }
            return value;
        };
    }, true);
})();

CoolCmd
Предыдущий код ➜ "Предупреждение" — unreachable code after return statement

Последний код "ошибки" 3 шт. :

скрытый текст

Выделить код

Код:

!!!https://10.1.3.101:8006/#v1:0:18:4:::::: userscript.html:19:13
    <анонимный> moz-extension://b0952e0a-64f4-4314-9493-b29e11a353cd/userscript.html?id=f39fe801-c307-4861-b72b-76f7e35e1d43:19
    <анонимный> moz-extension://b0952e0a-64f4-4314-9493-b29e11a353cd/userscript.html?id=f39fe801-c307-4861-b72b-76f7e35e1d43:46
    g eval:3
    <анонимный> moz-extension://b0952e0a-64f4-4314-9493-b29e11a353cd/userscript.html?id=f39fe801-c307-4861-b72b-76f7e35e1d43:2
    <анонимный> moz-extension://b0952e0a-64f4-4314-9493-b29e11a353cd/userscript.html?id=f39fe801-c307-4861-b72b-76f7e35e1d43:3
    <анонимный> moz-extension://b0952e0a-64f4-4314-9493-b29e11a353cd/userscript.html?id=f39fe801-c307-4861-b72b-76f7e35e1d43:47
    <анонимный> moz-extension://b0952e0a-64f4-4314-9493-b29e11a353cd/userscript.html?id=f39fe801-c307-4861-b72b-76f7e35e1d43:49
    g eval:3
    b eval:2
    E_u eval:3
    y eval line 1 > Function:65
    ja eval line 1 > Function:64
    create eval line 1 > Function:75
    e eval line 1 > Function:16
    run eval line 1 > Function:16
    anonymous eval line 1 > Function:77
    g eval:3
    b eval:2
    anonymous eval line 1 > Function:77
    anonymous eval line 1 > Function:77
    TM_back eval line 1 > Function:78
    anonymous eval line 1 > Function:78
    g eval:3
    exec_fn eval:1
    <анонимный> eval:11
    U eval:10
!!!DOMContentLoaded userscript.html:21:17
    <анонимный> moz-extension://b0952e0a-64f4-4314-9493-b29e11a353cd/userscript.html?id=f39fe801-c307-4861-b72b-76f7e35e1d43:21
!!!load userscript.html:34:17
    <анонимный> moz-extension://b0952e0a-64f4-4314-9493-b29e11a353cd/userscript.html?id=f39fe801-c307-4861-b72b-76f7e35e1d43:34


Но там ссылки (moz-extension://), которые  ведут прямо в код. Я не знаю как это всё передать. Вот последние две ошибки, а в первой что-то совсем дофига копировать.

!!!DOMContentLoaded — 21 строка (➜ ➜ ➜ ➜ ➜).

скрытый текст

Выделить код

Код:

(() => {
    'use strict';
    console.error('!!!' + location.href);
    document.addEventListener('DOMContentLoaded', () => {
 ➜ ➜ ➜ ➜ ➜        console.error('!!!DOMContentLoaded');
        Proxmox.Utils.render_language = function(value) {
            if (!value) {
                return Proxmox.Utils.defaultText + ' (Russian)';
            }
            var text = Proxmox.Utils.language_map[value];
            if (text) {
                return text + ' (' + value + ')';
            }
            return value;
        };
    }, true);
    window.addEventListener('load', () => {
        console.error('!!!load');
        Proxmox.Utils.render_language = function(value) {
            if (!value) {
                return Proxmox.Utils.defaultText + ' (Russian)';
            }
            var text = Proxmox.Utils.language_map[value];
            if (text) {
                return text + ' (' + value + ')';
            }
            return value;
        };
    }, true);
})();
})}})(this.context, this.fapply, this.console);
//# sourceURL=moz-extension://b0952e0a-64f4-4314-9493-b29e11a353cd/userscript.html?id=f39fe801-c307-4861-b72b-76f7e35e1d43
}).apply(window["__u__10519422.550962139_"])


!!!load 34 строка — (➜ ➜ ➜ ➜ ➜)
скрытый текст

Выделить код

Код:

(() => {
    'use strict';
    console.error('!!!' + location.href);
    document.addEventListener('DOMContentLoaded', () => {
        console.error('!!!DOMContentLoaded');
        Proxmox.Utils.render_language = function(value) {
            if (!value) {
                return Proxmox.Utils.defaultText + ' (Russian)';
            }
            var text = Proxmox.Utils.language_map[value];
            if (text) {
                return text + ' (' + value + ')';
            }
            return value;
        };
    }, true);
    window.addEventListener('load', () => {
 ➜ ➜ ➜ ➜        console.error('!!!load');
        Proxmox.Utils.render_language = function(value) {
            if (!value) {
                return Proxmox.Utils.defaultText + ' (Russian)';
            }
            var text = Proxmox.Utils.language_map[value];
            if (text) {
                return text + ' (' + value + ')';
            }
            return value;
        };
    }, true);
})();
})}})(this.context, this.fapply, this.console);
//# sourceURL=moz-extension://b0952e0a-64f4-4314-9493-b29e11a353cd/userscript.html?id=f39fe801-c307-4861-b72b-76f7e35e1d43
}).apply(window["__u__14184145.207414657_"])

leshiy_odessa
как я понял, (Russian) в списке нет?
нужно в отладчике смотреть, гадалки здесь бессильны. проще взять файл proxmoxlib.js и отредактировать его.

CoolCmd пишет

как я понял, (Russian) в списке нет?

В каком списке? Списке ошибок или в списке выбора языка?

CoolCmd пишет

проще взять файл proxmoxlib.js и отредактировать его

Я так и делал, но он потом возвращается взад. То из-за обновления, то ли из-за того что сам себя проверяет. Скорее первое.

update Только что преверил, замена в proxmoxlib.js не работает.

return Proxmox.Utils.defaultText + ' (English)';   ➜     return Proxmox.Utils.defaultText + '(Russian)';

leshiy_odessa
А не поможет в твоем случае такая настройка(яхз есть ли она в этих_ваших_квантумах, но раньше была и есть в PaleMoon)
intl.accept_languages = en-US, en, ru-RU, ru
... по-умолчанию, там стоит первыми ru-RU и это заставляет сайты грузить РУ-морду. Поменять ежли на инглиш, то всякие многояз.сайты перестают переключаться на "ломаный русский" и грузят обычнуйю англ. морду.
Мож и в твоем случае подойдёт.

Помогите пожалуйста
Не работает скрипт на сайте www.inoreader.com, на других сайтах работает
скрипт заменяет слова на сайтах, заменяет слово1 на слово2

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name           Replace Text On Webpages
// @namespace      http://userscripts.org/users/23652
// @description    Replaces text on websites. Now supports wildcards in search queries. Won't replace text in certain tags like links and code blocks
// @include        http://*
// @include        https://*
// @include        file://*
// @exclude        http://userscripts.org/scripts/review/*
// @exclude        http://userscripts.org/scripts/edit/*
// @exclude        http://userscripts.org/scripts/edit_src/*
// @exclude        https://userscripts.org/scripts/review/*
// @exclude        https://userscripts.org/scripts/edit/*
// @exclude        https://userscripts.org/scripts/edit_src/*
// @copyright      JoeSimmons
// @version        1.1.0
// @license        http://creativecommons.org/licenses/by-nc-nd/3.0/us/
// ==/UserScript==
(function () {
    'use strict';


    /*
        NOTE: 
            You can use \\* to match actual asterisks instead of using it as a wildcard!
            The examples below show a wildcard in use and a regular asterisk replacement.
    */

    var words = {
    ///////////////////////////////////////////////////////


        // Syntax: 'Search word' : 'Replace word',
        'your a' : 'you\'re a',
        'im\\*o' : 'matching an asterisk, not a wildcard',
        '/\\bD\\b/g' : '[D]',


    ///////////////////////////////////////////////////////
    'слово1':'слово2'};









    //////////////////////////////////////////////////////////////////////////////
    // This is where the real code is
    // Don't edit below this
    //////////////////////////////////////////////////////////////////////////////

    var regexs = [], replacements = [],
        tagsWhitelist = ['PRE', 'BLOCKQUOTE', 'CODE', 'INPUT', 'BUTTON', 'TEXTAREA'],
        rIsRegexp = /^\/(.+)\/([gim]+)?$/,
        word, text, texts, i, userRegexp;

    // prepareRegex by JoeSimmons
    // used to take a string and ready it for use in new RegExp()
    function prepareRegex(string) {
        return string.replace(/([\[\]\^\&\$\.\(\)\?\/\\\+\{\}\|])/g, '\\$1');
    }

    // function to decide whether a parent tag will have its text replaced or not
    function isTagOk(tag) {
        return tagsWhitelist.indexOf(tag) === -1;
    }

    delete words['']; // so the user can add each entry ending with a comma,
                      // I put an extra empty key/value pair in the object.
                      // so we need to remove it before continuing

    // convert the 'words' JSON object to an Array
    for (word in words) {
        if ( typeof word === 'string' && words.hasOwnProperty(word) ) {
            userRegexp = word.match(rIsRegexp);

            // add the search/needle/query
            if (userRegexp) {
                regexs.push(
                    new RegExp(userRegexp[1], 'g')
                );
            } else {
                regexs.push(
                    new RegExp(prepareRegex(word).replace(/\\?\*/g, function (fullMatch) {
                        return fullMatch === '\\*' ? '*' : '[^ ]*';
                    }), 'g')
                );
            }

            // add the replacement
            replacements.push( words[word] );
        }
    }

    // do the replacement
    texts = document.evaluate('//body//text()[ normalize-space(.) != "" ]', document, null, 6, null);
    for (i = 0; text = texts.snapshotItem(i); i += 1) {
        if ( isTagOk(text.parentNode.tagName) ) {
            regexs.forEach(function (value, index) {
                text.data = text.data.replace( value, replacements[index] );
            });
        }
    }

}());


В описании указано что он не заменяет текст в ссылках и блоках кода
Может в этом причина?

Здраствуйте, может ли кто починить скрипт для ютуба который отображает сперва новые коментарии вместо популярных?

Выделить код

Код:

// ==UserScript==
// @name        Show newer YouTube comments
// @namespace   com.vsubhash.js.show-youtube-comments-newer
// @description Automatically changes YouTube comments filter off
// @include     https://www.youtube.com/watch*
// @exclude     %exclude%
// @version     2018
// @grant       none
// ==/UserScript==

 
document.addEventListener("DOMContentLoaded", startItDelayed, false);
  
function startItDelayed() {
  window.setTimeout(switchCommentsList, 10*1000);
}
 
function switchCommentsList() { 
  console.log("Showing newer comments");
  var arButtons = document.getElementsByTagName("button");
  console.log(arButtons.length);
  
  var bFound = false;
  for (var i = 0; i < arButtons.length; i++) {
    //console.log(arButtons[i].textContent);
    if (arButtons[i].textContent.trim() == "Top comments") {
      arButtons[i].click();
      bFound = true;
      break;
    }
  }
  if (bFound) {
    //console.log("Menu found--------------");
    var arButtons = document.getElementsByTagName("button");
    console.log(arButtons.length);
    for (var i = 0; i < arButtons.length; i++) {
      //console.log(arButtons[i].textContent);
      if (arButtons[i].textContent.trim() == "Newest first") {
        arButtons[i].click();
        bFound = true;
        break;
      }
    }
  }
  
  
}

Есть рабочий скрипт для бесконечной прокрутки выдачи Яндека. Что находил по запросу AutoPagerize, не работает.

oleg.sgh

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Stkvsky
Странно, этот не попадался. Забрал. Спасибо.

oleg.sgh
А поиск там недавно урезали совсем, большинство результатов не выдает
Так же кстати как и когдато для userstyles.net и на АМО с поиском та же беда.
Ограничивают, блокруют развитие браузера в "ненужных" направлениях

Я теперь так ищу:
В гугле, например: AutoPagerize site:https://greasyfork.org/ru

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Stkvsky
Я тоже так нередко делаю. Кстати, после оператора достаточно добавить только домен - site:greasyfork.org

Может быть здесь найдётся добрый человек, который уберёт эту напасть возникающую при использовании Greasemonkey:

скрытый текст
4yrjGqk.png

Крайней левой кнопкой панели, лишнюю можно убрать, но... ненадолго. Походить по страницам, пост отправить и они опять спариваются. Чистка кеша не помогает..
При этом с Tampermonkey ничего подобного не происходит.
скрытый текст

Выделить код

Код:

// ==UserScript==
// @name          Ru-Board Helper Furee mod
// @version       2.7 (17.01.2020 06:01:07)
// @icon          http://forum.ru-board.com/favicon.ico
// @include       http*://forum.ru-board.com/topic.cgi?forum=*
// @include       http*://72.233.112.78/topic.cgi?forum=*
// @include       http*://forum.ru-board.com/forum.cgi?forum=*
// @include       http*://72.233.112.78/forum.cgi?forum=*
// @include       http*://forum.ru-board.com/messanger.cgi?action=*
// @require       https://code.jquery.com/jquery-latest.min.js
// ==/UserScript==

(function() {
  var IgnName   = 'Ignore';
  var FrndsName = 'Friends';
  var StatName  = 'Nick-';
  var NickSrchName = 'NickSearch';
  var TextSrchName = 'TextSearch';
  var Delim1    = ',';
  var IgnCnt    = -1;
  var SrchInPth = 'topic.cgi';
  var SrchForum = 'forum.cgi';
  var FrmsName  = 'Forums';
  var IgnM      = new Array();
  var UseNickSearch = true; // false;
  var UseTextSearch = true; // false;
  var UseQuote      = true; // false;
  var LastNickFind  = '';
  var UseFriends    = true; // false;
  var FriendsColor  = '#cfffcf';
  var TblText1s = '<table align="center" bgcolor="#999999" border="0" cellpadding="3" cellspacing="1" width="95%">';
  var TblText1e = '</table>';
  var AddForumS = 'AddForum';
  var IsAddForums = true; // false;
  var UseHideLink = true;
  var SaveMessage = false;
  var UseIgnore   = true;
  var isUseAddPages = true; // false
  var isUseStatus   = true; // false
  var isUseVeche    = true; // false;
  var FrmLoadListS  = '';
  var FrmLoaded     = '';
  var CookDate1     = new Date("1 May 2100 11:00");
  var UseLocalStorage = true; // false;

    function HideText(NickName, TrTag) {
    DivTag = TrTag.getElementsByTagName('div');
    if (!((DivTag.length > 0) && (DivTag[0].id.indexOf('Ignor') == 0))) {
      if (TrTag.name == undefined) {
        IgnCnt       = IgnCnt +1;
        IgnM[IgnCnt] = TrTag.innerHTML;
        TrTag.name   = IgnCnt;
      } else {
        IgnCnt       = TrTag.name;
      }
      Ind1 = IgnCnt;
      TrTag.innerHTML = ''
       +'<td>'
       +'<div ID=Ignor' +Ind1
       +' Align=left><font class=tit>&nbsp;\u0424\u043e\u0440\u0443\u043c\u0438\u0441\u0442 <b>' +NickName +'</b>'
        +'<font style="FONT-SIZE:10pt;COLOR:#333333;" class="StatusBlock2" '
        +'title="' +NickName +'" ' +'></font>'
       +' \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f\u002e '
       +'<a Name=' +Ind1 +' ID=AIgnor' +Ind1
       +' href=javascript:UnIgn("Ignor' +Ind1
       +'")><u>\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0020\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435</u></a></font>'
       +'</div>'
       +'</td>'
       ;
      document.getElementById('AIgnor' +Ind1).addEventListener("click",
        function() {UnIgn(this.name)}, false);
      var TbTag1 = TrTag.parentNode.parentNode;
      if (TbTag1 != null) {TbTag1.cellPadding = "0"}
    }
  }

  function main(IgnS, isAddLinks, Reverse, FriendsList, SearchText) {
    var isSearchText = ((SearchText != undefined) && (SearchText != ''));
    if (isSearchText) {Wrlds1 = splitSrch(SearchText);}
    if (IgnS == undefined) {IgnS = ''}
    var Ign    = IgnS.split(Delim1);
    var TrT    = document.getElementsByTagName('tr');
    for (var i = 0; i < TrT.length ; i++) {
      var Btag = TrT[i].getElementsByTagName('b');
      if (Btag.length == 0) continue;
      if (isAddLinks) {
        var TdTag    = TrT[i].getElementsByTagName('td');
        if (TdTag.length >= 3) {
          if (TdTag[2].className=="tpc") {
            var s2 = '';
            if (UseHideLink) {
              s2 = s2
               +'<a class="tpc" title="Hide this block' +'"'
               +' name="' +Btag[0].innerHTML +'"'
               +' ID=AHideLink' +i
               +' href=javascript:HidePost1("' +Btag[0].innerHTML +'")'
               +'>[-]</a> '
             ;
            }
            if (UseIgnore) {
              s2 = s2
               +'<a class="tpc" title="\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c\u0020\u0438\u043b\u0438\u0020\u0443\u0434\u0430\u043b\u0438\u0442\u044c ' +"'" +Btag[0].innerHTML
               +"'" +' \u0438\u0437\u0020\u0438\u0433\u043d\u043e\u0440\u0430" name="' +Btag[0].innerHTML +'"'
               +' ID=IgnorLink' +i
               +' href=javascript:AddDelIgn("IgnorLink' +i +'")>\u0418\u0433\u043d\u043e\u0440'
               +'</a> | ';
            }
            if (UseFriends) {
              s2 = s2
               +'<a class="tpc" title="\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c\u0020\u0438\u043b\u0438\u0020\u0443\u0434\u0430\u043b\u0438\u0442\u044c ' +"'" +Btag[0].innerHTML
               +"'" +' \u0438\u0437\u0020\u0441\u043f\u0438\u0441\u043a\u0430\u0020\u0434\u0440\u0443\u0437\u0435\u0439" name="' +Btag[0].innerHTML +'"'
               +' ID=FriendsLink' +i
               +' href=javascript:AddDelFrnd("FriendsLink' +i +'")>\u0414\u0440\u0443\u0433'
               +'</a> | ';
            }
            if (UseNickSearch) {
              s2 = s2
               +'<a class="tpc" title="\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0020\u0438\u043b\u0438\u0020\u0441\u043f\u0440\u044f\u0442\u0430\u0442\u044c\u0020\u0432\u0441\u0435\u0020\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0020\u043e\u0442 '
               +"'" +Btag[0].innerHTML
               +"'" +'" name="' +Btag[0].innerHTML +'"'
               +' ID=ANickSrch' +i
               +' href=javascript:NickSrch("' +Btag[0].innerHTML +'")'
               +'>\u041f\u043e\u0438\u0441\u043a</a>'
               +' | ';
            }
            if (isUseStatus) {
              s2 = s2
               +'<a class="tpc" title="\u041f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c\u0020\u0441\u0442\u0430\u0442\u0443\u0441\u0020\u0444\u043e\u0440\u0443\u043c\u0438\u0441\u0442\u0443 '
               +"'" +Btag[0].innerHTML
               +"'" +'" name="' +Btag[0].innerHTML +'"'
               +' ID=ACustStat' +i
               +' href=javascript:EditCustStat("' +Btag[0].innerHTML +'")'
               +'>\u0421\u0442\u0430\u0442\u0443\u0441</a>'
               +' | ';
            }
            if (UseQuote) {
             s2 = s2
             +'<a class="tpc" title="\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\u0020\u0446\u0438\u0442\u0430\u0442\u0443\u0020\u0432\u0020\u043e\u0442\u0432\u0435\u0442\u0020\u0443\u043a\u0430\u0437\u0430\u0432\u0020\u0441\u0441\u044b\u043b\u043a\u0443\u0020\u043d\u0430\u0020\u044d\u0442\u043e\u0442\u0020\u043f\u043e\u0441\u0442\u0438\u043d\u0433\u0020\u0438\u0020\u0435\u0433\u043e\u0020\u0430\u0432\u0442\u043e\u0440\u0430\u002e"'
             +' ID=AInsSel' +i
             +' href=javascript:InsertSel1()>\u0426\u0438\u0442\u0430\u0442\u0430'
             +'</a> | ';
            }
             if (SaveMessage) {
             s2 = s2
             +'<a class="tpc" title="\u0422\u0435\u0441\u0442"'
             +' ID=SaveMessageID' +i
             +' href=javascript:SaveMessageFn()>\u0422\u0435\u0441\u0442'
             +'</a> | ';
            }
            TdTag[2].innerHTML = ''
             +s2
             +TdTag[2].innerHTML;
            if (UseIgnore) {
              document.getElementById('IgnorLink' +i).addEventListener("click",
               function() {AddDelIgn(this.id)}, false)}
            if (UseFriends) {
              document.getElementById('FriendsLink' +i).addEventListener("click",
               function() {AddDelFrnd(this.id)}, false)}
            if (UseNickSearch) {
              document.getElementById('ANickSrch' +i).addEventListener("click",
               function() {NickSrch(this.name)}, false)}
            if (UseHideLink) {
              document.getElementById('AHideLink' +i).addEventListener("click",
                function() {HidePost1(this.id)}, false)}
            if (isUseStatus) {
              document.getElementById('ACustStat' +i).addEventListener("click",
                function() {EditCustStat(this.name)}, false)}
            //------------------------------
            if (SaveMessage) {
              document.getElementById('SaveMessageID' +i).addEventListener("click",
                function() {SaveMessageFn()}, false)}
            //------------------------------
            if (isUseStatus) {
              FntTgs1 = TdTag[1].getElementsByTagName('font');
              if (FntTgs1.length==0) {
                FTg1 = document.createElement('font');
                FTg1.className = 'StatusBlock';
                FTg1.title     = Btag[0].innerHTML
                FTg1.innerHTML = '';
                TdTag[1].appendChild(FTg1);
              }
            }
            if (UseQuote) {
              document.getElementById('AInsSel' +i).addEventListener("click",
                function() {InsertSel1()}, false);
            }
          }
        }
      }

      if (isSearchText) {
        var HrT = TrT[i].getElementsByTagName('hr');
        if (HrT.length > 1) {
          var Find1 = false;
          var k1    = 0;
          var SpnT = TrT[i].getElementsByTagName('span');
          if (SpnT.length > 0) {
            var s     = SpnT[0].textContent;
            for (var j = Wrlds1.length -1; j >= 0; j--) {
              if (s.toLowerCase().indexOf(Wrlds1[j].toLowerCase()) > 0) {
                Find1 = true;
                break;
              }
            }
            if (!Find1)
            {
              HideText(Btag[0].innerHTML, TrT[i])
            }
          }
        }
      } else
      {
        if (Reverse) {
          var HrT = TrT[i].getElementsByTagName('hr');
          if (HrT.length <= 1) continue;
          var Find1 = false;
          var k1    = 0;
          for (var j = Ign.length -1; j >= 0; j--) {
            if (Btag[0].innerHTML == Ign[j]) {
              Find1 = true;
              break;
            }
          }
          if (!Find1) {HideText(Btag[0].innerHTML, TrT[i])}
        } else {
          for (var j = Ign.length -1; j >= 0; j--) {
            if (Btag[0].innerHTML == Ign[j]) {
              HideText(Ign[j], TrT[i]);
            break;
            }
          }
        }
      }
    }

    if (isSearchText) {
      for (var i = IgnCnt; i >= 0; i--){
        var DivTag1 = document.getElementById('Ignor' +i);
        if (DivTag1 == null) continue;
        var BTag2 = DivTag1.getElementsByTagName('b');
        if (BTag2.length <= 0) continue;
        var DTag2    = document.createElement("div");
        DTag2.innerHTML = IgnM[i];
        var SpnT2 = DTag2.getElementsByTagName('span');
        if (SpnT2.length > 0) {
          var s = SpnT2[0].textContent;
          for (var j = Wrlds1.length -1; j >= 0; j--) {
            if (s.toLowerCase().indexOf(Wrlds1[j].toLowerCase()) >= 0) {
              UnIgn(i);
              break;
            }
          }
        }
      }
    } else
    {
      if (Reverse) {
        for (var i = IgnCnt; i >= 0; i--){
          var DivTag1 = document.getElementById('Ignor' +i);
          if (DivTag1 == null) continue;
          var BTag2 = DivTag1.getElementsByTagName('b');
          if (BTag2.length <= 0) continue;
          for (var j = 0; j < Ign.length; j++) {
            if (BTag2[0].innerHTML == Ign[j]) {
              UnIgn(i);
              break;
            }
          }
        }
      } else {
        for (var i = IgnCnt; i >= 0; i--){
          var DivTag1 = document.getElementById('Ignor' +i);
          if (DivTag1 == null) continue;
          var BTag2 = DivTag1.getElementsByTagName('b');
          if (BTag2.length <= 0) continue;
          var Find1 = 0;
          for (var j = 0; j < Ign.length; j++) {
            if (BTag2[0].innerHTML == Ign[j]) {
              Find1 = 1;
              break;
            }
          }
          if (Find1==0) {UnIgn(i)}
        }
      }
    }
    IgnLinkColor();
    if (UseFriends) {SetFriendsColor(getCookie(FrndsName));}
    SetStauses();
  }

  if (document.location.pathname.indexOf(SrchInPth) > -1) {
    main(getCookie(IgnName), true, false);}

  function SetStauses() {
    var FntTg1    = document.getElementsByTagName('font');
    for (var i = 0; i < FntTg1.length ; i++) {
      if (FntTg1[i].className.indexOf('StatusBlock')!=0) continue;
      var sCook1 = getCookie(StatName +FntTg1[i].title);
      if (sCook1 == undefined) {sCook1=''} else {
        if (sCook1=='') {
          deleteCookie(StatName +FntTg1[i].title);
          sCook1='';
        } else {
          if (FntTg1[i].className.indexOf('StatusBlock2')==0) {
            sCook1 = ' ( ' +sCook1 + ' ) '
          } else {
            sCook1='<br>'+sCook1
          }
        }
      }
      FntTg1[i].innerHTML = sCook1;
    }
  }

  function SetFriendsColor(FriendsList) {
    if ((FriendsList != undefined) && (UseFriends)) {
      var TrT  = document.getElementsByTagName('tr');
      var Frnd = FriendsList.split(Delim1);
      for (var i = 0; i < TrT.length ; i++) {
        var Btag = TrT[i].getElementsByTagName('b');
        if (Btag.length == 0) continue;
        var TdTag    = TrT[i].getElementsByTagName('td');
        if (TdTag.length >= 3) {
          if (TdTag[2].className=="tpc") {
            if ((FriendsList != undefined) && (UseFriends)) {
               var Find2 = false;
               for (var j = 0; j < Frnd.length ; j++) {
                 if (Btag[0].innerHTML == Frnd[j]) {
                   Find2 = true;
                   break;
                 }
               }
               if (Find2) {
                 TdTag[1].bgColor = FriendsColor;
               } else {
                 TdTag[1].bgColor = TdTag[2].bgColor;
               }
            }
          }
        }
      }
    }
  }

  function IgnLinkColor(){
    var TrT  = document.getElementsByTagName('tr');
    var Ign2 = getCookie(IgnName);
    if (Ign2 == undefined) {Ign2 = ''}
    for (var i = 0; i < TrT.length ; i++) {
      var ATag = document.getElementById('IgnorLink' +i);
      if (ATag==null) continue;
      if (IsTextInStr(ATag.name, Ign2, Delim1)) {
        ATag.innerHTML = '<font Color=#FF0000>\u0418\u0433\u043d\u043e\u0440</font>'
      } else {
        ATag.innerHTML = '\u0418\u0433\u043d\u043e\u0440'
      }
    }
  }

  function UnIgn(IgnCnt){
    var PrTag1 = document.getElementById('Ignor' +IgnCnt).parentNode.parentNode;
    PrTag1.innerHTML = IgnM[IgnCnt];
    IgnLinkColor();
    if (UseFriends) {SetFriendsColor(getCookie(FrndsName));}
    var Tgs1 = PrTag1.getElementsByTagName('a');
    if (UseIgnore) {
      for (var i = 0; i < Tgs1.length ; i++) {
        if (Tgs1[i].id.indexOf('IgnorLink') == 0) {
          Tgs1[i].addEventListener("click", function() {AddDelIgn(this.id)}, false);
          break;
        }
      }
    }
    if (UseFriends) {
      for (var i = 0; i < Tgs1.length ; i++) {
        if (Tgs1[i].id.indexOf('FriendsLink') == 0) {
          Tgs1[i].addEventListener("click", function() {AddDelFrnd(this.id)}, false);
          break;
        }
      }
    }
    if (UseNickSearch) {
      for (var i = 0; i < Tgs1.length ; i++) {
        if (Tgs1[i].id.indexOf('ANickSrch') == 0) {
          Tgs1[i].addEventListener("click", function() {NickSrch(this.name)}, false);
          break;
        }
      }
    }
    if (UseHideLink) {
      for (var i = 0; i < Tgs1.length ; i++) {
        if (Tgs1[i].id.indexOf('AHideLink') == 0) {
          Tgs1[i].addEventListener("click", function() {HidePost1(this.id)}, false);
          break;
        }
      }
    }
    if (isUseStatus) {
      for (var i = 0; i < Tgs1.length ; i++) {
        if (Tgs1[i].id.indexOf('ACustStat') == 0) {
          Tgs1[i].addEventListener("click", function() {EditCustStat(this.name)}, false);
          break;
        }
      }
    }
    //----------------------------
    if (SaveMessage) {
      for (var i = 0; i < Tgs1.length ; i++) {
        if (Tgs1[i].id.indexOf('SaveMessageID') == 0) {
          Tgs1[i].addEventListener("click", function() {SaveMessageFn()}, false);
          break;
        }
      }
    }
    //----------------------------
    if (UseQuote) {
      for (var i = 0; i < Tgs1.length ; i++) {
        if (Tgs1[i].id.indexOf('AInsSel') == 0) {
          Tgs1[i].addEventListener("click", function() {InsertSel1()}, false);
          break;
        }
      }
    }
    var TbTag1 = PrTag1.parentNode.parentNode;
    if (TbTag1 != null) {TbTag1.cellPadding = "5"}
    SetStauses();
  }

  function EditIgn() {
    var s = getCookie(IgnName);
    if (s == undefined) {s = ''}
    if (s==null) {s='';}
    s = prompt('\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0020\u0438\u0433\u043d\u043e\u0440\u0430\u002e\u0020\u0417\u0430\u043f\u0438\u0448\u0438\u0442\u0435\u0020\u0432\u0440\u0430\u0433\u043e\u0432\u0020\u0447\u0435\u0440\u0435\u0437\u0020\u0437\u0430\u043f\u044f\u0442\u0443\u044e\u002e\u0020\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u003a\u0020\u0046\u0072\u0065\u0061\u006b\u002c\u0020\u0054\u0072\u006f\u006c\u006c', s.replace(/^,/g,""));
    if(s!=null){
      setCookie(IgnName,PrsUsersList(s),{expires:CookDate1});
      main(getCookie(IgnName), false);
    }
  };
  function EditFrnds() {
    var s = getCookie(FrndsName);
    if (s == undefined) {s = ''}
    if (s==null) {s='';}
    s = prompt('\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0020\u0434\u0440\u0443\u0437\u0435\u0439\u002e\u0020\u0417\u0430\u043f\u0438\u0448\u0438\u0442\u0435\u0020\u0434\u0440\u0443\u0437\u0435\u0439\u0020\u0447\u0435\u0440\u0435\u0437\u0020\u0437\u0430\u043f\u044f\u0442\u0443\u044e\u002e\u0020\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u003a\u0020\u004d\u0065\u002c\u0020\u004d\u0069\u006e\u0065\u002c\u0020\u004d\u0079\u0073\u0065\u006c\u0066', s.replace(/^,/g,""));
    if(s!=null){
      setCookie(FrndsName,PrsUsersList(s),{expires:CookDate1});
      SetFriendsColor(getCookie(FrndsName));
    }
  };
  function EditCustStat(aName) {
    var s = getCookie(StatName +aName);
    if (s == undefined) {s = ''}
    if (s==null) {s='';}
    s = prompt('\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0020\u0441\u0442\u0430\u0442\u0443\u0441\u0430\u002e\u0020\u0417\u0430\u043f\u0438\u0448\u0438\u0442\u0435\u0020\u0441\u0432\u043e\u0451\u0020\u043c\u043d\u0435\u043d\u0438\u0435\u0020\u043e '
     +"'"  +aName +"'" +' \u0437\u0434\u0435\u0441\u044c\u002e', s);
    if(s!=null){
      setCookie(StatName +aName,s,{expires:CookDate1});
      SetStauses();
    }
  };
  //------------------------------
  function SaveMessageFn(){
    var c = document.createElement("a");
    for(var i=0, a=document.querySelectorAll(".post"); i<a.length;i++)
    var h = new Blob([document.location.href.split("#")[0]+"#"+(+a+1)+"<hr><p>"+document.querySelectorAll(".post")[a].innerHTML],{type:"text/html"});
    c.setAttribute("href",window.URL.createObjectURL(h));
    c.setAttribute("download",new Date().toTimeString().substr(0,8)+".htm");
    c.click();
    c.remove();
    }
  //------------------------------
  if (document.location.pathname.indexOf(SrchInPth) > -1) {
    var Td2T    = document.getElementsByTagName('td');
    for (var i = 0; i < Td2T.length ; i++) {
      if ((Td2T[i].className=="dats") && (Td2T[i].align=="right")){
        var s1 = '';
        if (UseTextSearch) {
          var s2 = getCookie(TextSrchName);
          if (s2==undefined) {s2=''} else {s2 = s2.replace(/'/g,'')}
          s1 = s1 +''
           +'<div Title="\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u003a ' +"'" +'Metallica, &quot;Iron Maiden&quot;'
           +"'" +'. \u041f\u0443\u0441\u0442\u0430\u044f\u0020\u0441\u0442\u0440\u043e\u043a\u0430\u0020\u002d\u0020\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0020\u0432\u0441\u0435\u0020\u043f\u043e\u0441\u0442\u044b">\u041f\u043e\u0438\u0441\u043a\u0020\u0442\u0435\u043a\u0441\u0442\u0430 '
           +'<input Type=text ID=TextSrEdit'
           +" value='" +s2 +"'"
           +' onkeydown="javascript:if(event.keyCode==13)'
           +'document.getElementById('  +"'TextSrBtn'" +').click();"'
           +'>'
           +'<button Type=button Name=TextSrBtn ID=TextSrBtn OnClick=javascript:TextSrch()>&gt;</button></div>'
           ;
        }
        if (UseNickSearch) {
          var s2 = getCookie(NickSrchName);
          if (s2==undefined) {s2=''} else {s2 = s2.replace(/"/g,'')}
          s1 = s1 +''
           +'<div Title="\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u003a ' +"'" +'MyNick, Friend, Etc'
           +"'" +'. \u041f\u0443\u0441\u0442\u0430\u044f\u0020\u0441\u0442\u0440\u043e\u043a\u0430\u0020\u002d\u0020\u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c\u0020\u043f\u043e\u0438\u0441\u043a\u002e">\u041f\u043e\u0438\u0441\u043a\u0020\u043d\u0438\u043a\u0430 '
           +'<input Type=text ID=NickEdit '
           +' value="' +s2 +'"'
           +' onkeydown="javascript:if(event.keyCode==13)'
           +'document.getElementById('  +"'NickBtn'" +').click();"'
           +'>'
           +'<button Type=button Name=NickBtn ID=NickBtn OnClick=javascript:NickSrch()>&gt;</button></div>'
           ;
        }
        if (UseIgnore) {
          s1 = s1 +''
           +'&nbsp;<a ID=IgnEditor title="\u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0020\u0441\u043f\u0438\u0441\u043e\u043a\u0020\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445" '
           +'href=javascript:EditIgn()>\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0020\u0438\u0433\u043d\u043e\u0440\u0430</a> &#149; '
        }
        if (UseFriends) {
          s1 = s1 +''
           +'<a ID=IgnFriends title="\u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0020\u0441\u043f\u0438\u0441\u043e\u043a\u0020\u0434\u0440\u0443\u0437\u0435\u0439" '
           +'href=javascript:EditFrnds()>\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0020\u0434\u0440\u0443\u0437\u0435\u0439</a> &#149; '
        }
        if (isUseVeche) {
          s1 = s1 +''
           +'<a ID=AVoteLink title="\u041f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0020\u0432\u0020\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u0445\u0020\u043f\u043e\u0441\u0442\u0438\u043d\u0433\u0430\u0445\u0020\u043a\u0442\u043e\u0020\u043a\u0430\u043a\u0020\u043f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b" '
           +'href=javascript:CalcVeche("")>\u0413\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u0435</a> &#149; '
        }
        Td2T[i].innerHTML = s1 +Td2T[i].innerHTML;
        if (UseIgnore) {
          document.getElementById('IgnEditor').addEventListener("click",
            function() {EditIgn()}, false);
        }
        if (UseNickSearch) {
          document.getElementById('NickBtn').addEventListener("click",
            function() {NickSrch()}, false);
        }
        if (UseTextSearch) {
          document.getElementById('TextSrBtn').addEventListener("click",
            function() {TextSrch()}, false);
        }
        if (UseFriends) {
          document.getElementById('IgnFriends').addEventListener("click",
            function() {EditFrnds()}, false);
        }
        if (isUseVeche) {
          document.getElementById('AVoteLink').addEventListener("click",
            function() {CalcVeche("")}, false);
        }
        break;
      }
    }
  }

  function HidePost1(anID) {
    var aHideLink = document.getElementById(anID);
    if (aHideLink != null) {
      var aTr = aHideLink.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
      if (aTr != null) {HideText(aHideLink.name, aTr)}
    }
   SetStauses();
  }

  function NickSrch(aName) {
    if (aName == undefined) {
      var s = PrsUsersList(document.getElementById('NickEdit').value);
      setCookie(NickSrchName,s,{expires:CookDate1});
    } else {
      if (IsTextInStr(aName, LastNickFind, Delim1)) {
        var s = RemoveTextFromStr(aName, LastNickFind, Delim1);
      } else {
        var s = PrsUsersList(LastNickFind +Delim1 +aName);
      }
    }
    LastNickFind = s;
    if (s==null) {
      main(getCookie(IgnName), false)
    } else {
      if (s=='') {
        main(getCookie(IgnName), false);
      } else {
        main(s, false, true);
      }
    }
  };

  function TextSrch() {
    var s = document.getElementById('TextSrEdit').value;
    setCookie(TextSrchName,s,{expires:CookDate1});
    if ((s==null)
       ) {
      main(getCookie(IgnName), false)
    } else {
      main('', false, false, '', s);
    }
  };

  function IsTextInStr(Name, List, Delimetr) {
    if (List==undefined) {return false} else {
      var s = List.split(Delimetr);
      var Find1 = false;
      for (var j = s.length -1; j >= 0; j--) {
        if (s[j] == Name) {
          Find1 = true;
          s.splice(j, 1);
          break;
        }
      }
      return Find1;
    }
  }

  function RemoveTextFromStr(Name, List, Delimetr)
  {
    var sl1 = List.split(Delimetr);
    var Find1 = false;
    for (var j = sl1.length -1; j >= 0; j--) {
      if (sl1[j] == Name) {
        sl1.splice(j, 1);
        Find1 = true;
      }
    }
    return Find1 ? sl1.join(Delimetr) : List;
  }

  function AddDelIgn(IgnTagName){
    var aTag   = document.getElementById(IgnTagName);
    var sName1 = aTag.name;
    var s1 = getCookie(IgnName);
    if (s1 == undefined) {s1 = ''}
    if (IsTextInStr(sName1, s1, Delim1)) {
      if (confirm('(-) \u0412\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c "' +sName1 + '" \u0438\u0437\u0020\u0438\u0433\u043d\u043e\u0440\u0430\u003f')) {
        var s2 = RemoveTextFromStr(sName1, s1, Delim1);
        if (s2 != s1) {
          setCookie(IgnName, s2,{expires:CookDate1});
          main(s2, false);
        }
      }
    } else {
      if (confirm('(+) \u041f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c "' +sName1 + '" \u0432\u0020\u0438\u0433\u043d\u043e\u0440\u003f')) {
        s1 = s1 +Delim1 +sName1;
        setCookie(IgnName, s1,{expires:CookDate1});
        main(s1, false);
      }
    }
  }

  function AddDelFrnd(FrndTagName){
    var aTag   = document.getElementById(FrndTagName);
    var sName1 = aTag.name;
    var s1     = getCookie(FrndsName);
    if (s1 == undefined) {s1 = ''}
    if (IsTextInStr(sName1, s1, Delim1)) {
      if (confirm('(-) \u0423\u0434\u0430\u043b\u0438\u0442\u044c "' +sName1 + '" \u0438\u0437\u0020\u0434\u0440\u0443\u0437\u0435\u0439\u003f')) {
        var s2 = RemoveTextFromStr(sName1, s1, Delim1);
        if (s2 != s1) {
          setCookie(FrndsName, s2,{expires:CookDate1});
          if (UseFriends) {SetFriendsColor(getCookie(FrndsName));}
        }
      }
    } else {
      if (confirm('(+) \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c "' +sName1 + '" \u0432\u0020\u0434\u0440\u0443\u0437\u044c\u044f\u003f')) {
        s1 = s1 +Delim1 +sName1;
        setCookie(FrndsName, s1,{expires:CookDate1});
        if (UseFriends) {SetFriendsColor(getCookie(FrndsName));}
      }
    }
  }

  if ((isUseAddPages) && (document.location.pathname.indexOf(SrchInPth) > -1)) {
    function AddPageLinks1(aTag) {
      if ((aTag.className == 'small')
         && (aTag.colSpan == 2)
         && (aTag.align == 'left')
        ) {
        if (aTag.getElementsByTagName('div').length >0) return false;
        if (aTag.getElementsByTagName('table').length >0) return false;
        if (aTag.getElementsByTagName('form').length >0) return false;
        if (aTag.getElementsByTagName('input').length >0) return false;
        var s1 = document.location.href;
        s = ''
         +' | '
         +' <a title="\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0020\u0432\u0441\u0435\u0020\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b" href='
         +SetUrlTxt(s1, 'all').replace(/glp&/, '') +'>\u0412\u0441\u0435</a> '
         +' | '
         +' <a title="\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0020\u0432\u0441\u0435\u0020\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\u0020\u043e\u0442\u0020\u0442\u0435\u043a\u0443\u0449\u0435\u0439\u0020\u0438\u0020\u0434\u043e\u0020\u043a\u043e\u043d\u0446\u0430" href='
         +SetUrlTxt(s1, 'limit=1000').replace(/all&/,'').replace(/glp&/,'')
         +'>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435</a> '
         +' | '
         +' <a title="\u0421\u0441\u044b\u043b\u043a\u0430\u0020\u0432\u0435\u0434\u0451\u0442\u0020\u0412\u0421\u0415\u0413\u0414\u0410\u0020\u043d\u0430\u0020\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e\u0020\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443\u0020\u0442\u0435\u043c\u044b\u002e\u0020\u0423\u0434\u043e\u0431\u043d\u0430\u0020\u0434\u043b\u044f\u0020\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0020\u0432\u0020\u0438\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435\u002e" href='
         +SetUrlTxt(s1, 'glp').replace(/all&/,'') +'>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f</a> '
         +' | '
        ;
        aTag.innerHTML = aTag.innerHTML +s;
        return true;
      } else {return false}
    }

    var TdTg1 = document.getElementsByTagName('td');
    for (var i = 0; i<TdTg1.length; i++) {
      if (AddPageLinks1(TdTg1[i])) break}
    for (var i = TdTg1.length -1; i>=0; i--) {
      if (AddPageLinks1(TdTg1[i])) break}

  }

  function getCookie(name) {
    if ((UseLocalStorage) && (window.localStorage)) {
      var s1 = window.localStorage.getItem(name) || '';
      if (s1 != '') return s1;
    }
    var matches = document.cookie.match(new RegExp(
      "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
    ))
    return matches ? decodeURIComponent(matches[1]) : undefined
  }
  function setCookie(name, value, props) {
    if ((UseLocalStorage) && (window.localStorage)) {
      window.localStorage.setItem(name, value);
    } else
    {
      props = props || {}
      var exp = props.expires
      if (typeof exp == "number" && exp) {
          var d = new Date()
          d.setTime(d.getTime() + exp*1000)
          exp = props.expires = d
      }
      if(exp && exp.toUTCString) { props.expires = exp.toUTCString() }

      value = encodeURIComponent(value)
      var updatedCookie = name + "=" + value
      for(var propName in props){
          updatedCookie += "; " + propName
          var propValue = props[propName]
          if(propValue !== true){ updatedCookie += "=" + propValue }
      }
      document.cookie = updatedCookie
    }
  }
  function deleteCookie(name) {
    if ((UseLocalStorage) && (window.localStorage)) {
      window.localStorage.removeItem(name);
      setCookie(name, null, { expires: -1 })
    } else
    setCookie(name, null, { expires: -1 })
  }

  String.prototype.get = function(p){
    return (match = this.match(new RegExp("[?|&]?" + p + "=([^&]*)"))) ? match[1] : false;}

  function insertAfter(parent, node, referenceNode) {
    parent.insertBefore(node, referenceNode.nextSibling); }

  function splitSrch(s){
    a = [];
    s.replace(/"([^"]*)"|[\S]+/g, function(w, p) {a.push(p||w)});
    return a;
  }

  function PrsUsersList(aUserNicks) {
    var s = aUserNicks.replace(/,+/g,",");
    s = s.replace(/\s+/g," ");
    s = s.replace(/[, ]$/g,"").replace(/^,/g,"");
    s = s.replace(/,\s/g,",");
    return s;
  }

  function SetUrlTxt(u, s) {
    return ((u.indexOf('&' +s) < 0) && (u.indexOf('?' +s) < 0)) ?
      u.replace(/[?](.*)/g, function(a, b) {return '?' +s +'&'+b}) : u;}


  var isPAdding = false;
  var CurFLoad = -1;
  var CurForumNbm = window.location.search.get('forum');
  if (IsAddForums) {
    if ( (document.location.pathname.indexOf(SrchForum) > -1)
    ) {
      var TrTag3 = document.getElementsByClassName('tit')
      DTag1    = document.createElement("div");
      DTag1.id = 'Div100';
      var LoadList2 = getCookie(FrmsName +CurForumNbm);
      if (LoadList2 == undefined) {LoadList2 = ''}
      var FrmLoadList  = PrsUsersList(LoadList2).split(Delim1);
      DTag1.innerHTML = ''
        +'<center>'
        +'<div id="vote_status1"><br></div>'
        +'\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435\u0020\u0444\u043e\u0440\u0443\u043c\u044b: <font id=FForums>' +LoadList2 +'</font>'
        +' &nbsp; <input id=btnv1 value="Edit"'
        +' onclick="EdFrmsLst()" type="button" />'
        +'&nbsp; <font id="vote_status2">\u041c\u0435\u0441\u0442\u043e\u0020\u043e\u0442\u0432\u0435\u0442\u0430\u0020\u0441\u0435\u0440\u0432\u0435\u0440\u0430</font>'
        +'</center>';
      insertAfter(TrTag3[TrTag3.length -1].parentNode.parentNode.parentNode.parentNode, DTag1, TrTag3[TrTag3.length -1].parentNode.parentNode.parentNode);
      document.getElementById('btnv1').addEventListener("click",
       function() {EdFrmsLst()}, false);
    }
  }

  function EdFrmsLst() {
    var s = getCookie(FrmsName +CurForumNbm);
    if (s == undefined) {s = ''}
    if (s==null) {s='';}
    s = prompt('\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0020\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445\u0020\u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a\u002e\u0020\u0417\u0430\u043f\u0438\u0448\u0438\u0442\u0435\u0020\u043d\u043e\u043c\u0435\u0440\u0430\u0020\u0444\u043e\u0440\u0443\u043c\u043e\u0432\u002e\u0020\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u003a\u0020\u0031\u0033\u002c\u0020\u0037\u0032\u002c\u0020\u0037\u0035', s.replace(/^,/g,""));
    if(s!=null){
      FrmLoadListS = PrsUsersList(s);
      setCookie(FrmsName +CurForumNbm, FrmLoadListS,{expires:CookDate1});
      var FrmLoadList  = PrsUsersList(FrmLoadListS).split(Delim1);
      document.getElementById('FForums').innerHTML = s;
      var FrmLoadedList = PrsUsersList(FrmLoaded).split(Delim1);
      for (var j = 0; j < FrmLoadedList.length; j++) {
        if (FrmLoadedList[j] == '') continue;
        var Find1 = false;
        for (var i = 0; i < FrmLoadList.length; i++) {
          if (FrmLoadedList[j] == FrmLoadList[i]) {
            Find1 = true;
            break;
          }
        }
        var FrTag1 = document.getElementById(AddForumS +FrmLoadedList[j]);
        if (FrTag1 == null) continue;
        if (Find1) {
          FrTag1.style.display = "inline";
        } else {
          FrTag1.style.display = "none";
        }
      }
      AddPage1();
    }
  };

  function AddPage1() {
    if (CurFLoad != -1) {return false}
    var statusElem1 = document.getElementById('vote_status1');
    var statusElem2 = document.getElementById('vote_status2');
    if ((statusElem1 == null) || (statusElem2 == null)) return false;
    Find1 = 0;
    s = getCookie(FrmsName +CurForumNbm);
    if (s == undefined) {s = ''}
    var FrmLoadList  = PrsUsersList(s).split(Delim1);
    for (var j = 0; j < FrmLoadList.length; j++) {
      if (FrmLoadList[j] == '') continue;
      var tmp3 = document.getElementById(AddForumS +FrmLoadList[j]);
      if (tmp3 == null) {
        CurFLoad = FrmLoadList[j];
        Find1 = 1;
        break;
      }
    }

    if (Find1 == 1) {
      var req = getXmlHttp()
      req.onreadystatechange = function() {
        if (req.readyState == 4) {
          statusElem2.innerHTML = req.statusText
            +' \u0424\u043e\u0440\u0443\u043c\u003a' +CurFLoad;
          if(req.status == 200) {
            if (document.getElementById(AddForumS +CurFLoad) != null) {
              CurFLoad = -1;
              return false;
            }
            var temp = document.createElement('div');
            temp.innerHTML = req.responseText;
            var TdTags1 = temp.getElementsByClassName("tit");
            var NodeNew1 = document.createElement('div');
            NodeNew1.id = AddForumS +CurFLoad;
            FrmLoaded = FrmLoaded +',' +CurFLoad;
            if (TdTags1.length >= 2) {
              var TblTag1 = TdTags1[0].parentNode.parentNode.parentNode;
              var TblTag2 = TdTags1[1].parentNode.parentNode.parentNode;
              var TblTag3 = TdTags1[TdTags1.length-1].parentNode.parentNode.parentNode;
              s1 = '' +'<br>'
               +TblText1s +TblTag1.innerHTML +TblText1e
               +TblText1s +TblTag2.innerHTML +TblText1e
               +TblText1s +TblTag3.innerHTML +TblText1e ;
              NodeNew1.innerHTML = s1;
            } else {
              NodeNew1.innerHTML = '' +'<br>' +
                '\u041e\u0448\u0438\u0431\u043a\u0430\u0021\u0020\u0424\u043e\u0440\u0443\u043c ' +CurFLoad +' \u043f\u0443\u0441\u0442';
            }
            statusElem1.parentNode.insertBefore(NodeNew1, statusElem1);
            var tmp3 = document.getElementById(AddForumS +CurFLoad);
            CurFLoad = -1;
            AddPage1();
          } else {
            var NodeNew1 = document.createElement('div');
            NodeNew1.id  = AddForumS +CurFLoad;
            NodeNew1.innerHTML = '' +'<br>' +
              '\u041e\u0448\u0438\u0431\u043a\u0430\u0021\u0020\u041d\u0435\u0442\u0020\u043e\u0442\u0432\u0435\u0442\u0430\u0020\u043e\u0442\u0020\u0444\u043e\u0440\u0443\u043c\u0430\u0020 ' +CurFLoad +'.';
            statusElem1.parentNode.insertBefore(NodeNew1, statusElem1);
            var tmp3 = document.getElementById(AddForumS +CurFLoad);
            CurFLoad = -1;
            AddPage1();
          }
        }
      }
      req.open('GET', '/forum.cgi?forum=' +CurFLoad, true);
      req.send(null);
      statusElem2.innerHTML = 'Loading'
       +' \u0444\u043e\u0440\u0443\u043c:' +CurFLoad;
    } else {
      statusElem2.innerHTML = '\u0412\u0441\u0435\u0020\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\u0020\u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b.';
    }
  }

  function getXmlHttp(){
    var xmlhttp;
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
      xmlhttp = new XMLHttpRequest();
      xmlhttp.overrideMimeType('text/html');
    }
    return xmlhttp;
  }

  if (IsAddForums) {AddPage1()};

  var Veche1 = new Array();

  function CalcVeche(IgnS) {

    function FindOrAdd1(aNick, aText) {
      var Pt1 = -1;
      for (var i = 0; i < Veche1.length ; i++) {
        Ln1 = Veche1[i];
        if (aText.toLowerCase() == Ln1[0].toLowerCase()) {
          Pt1 = i;
          break;
        }
      }
      if (Pt1 == -1) {
        var Line1 = new Array();
        Line1[0] = aText;
        Line1[1] = aNick;
        Veche1[Veche1.length] = Line1;
      } else {
        var Line1 = Veche1[Pt1];
        var Find1 = false;
        for (var j = 1; j < Line1.length ; j++) {
          if (Line1[j] == aNick) {
            Find1 = true;
            break;
          }
        }
        if (!Find1) {
          Line1[Line1.length] = aNick;
          Veche1[Pt1] = Line1;
        }
      }
    }

    PTag1 = document.getElementById('P1Vote');
    if ((PTag1 != null) && (PTag1.innerHTML != '')) {
      PTag1.innerHTML = '';
    } else {

      Veche1 = [];
      if (IgnS == undefined) {IgnS = ''}
      var Ign    = IgnS.split(Delim1);

      var TbTag  = document.getElementsByTagName('table');
      for (var i = 0; i < TbTag.length ; i++) {
        if (TbTag[i].className == "tb") {
          var TrT = TbTag[i].getElementsByTagName('tr');
          if (TrT.length == 0) continue;
          var BTag = TbTag[i].getElementsByTagName('b');
          if (BTag.length == 0) continue;
          LiTag =  TbTag[i].getElementsByTagName('li');
          for (var j = 0; j < LiTag.length; j++) {
            B2Tag = LiTag[j].getElementsByTagName('b');
            if (B2Tag.length == 0) continue;
            if (B2Tag[0] == '') continue;
            FindOrAdd1(BTag[0].innerHTML, B2Tag[0].innerHTML);
          }
        }
      }
      if (Veche1.length == 0) {
        alert('\u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u0432\u0448\u0438\u0445\u0020\u043d\u0435\u0442\u002e');
      } else {
        for (var k = 0; k < Veche1.length; k++) {
          for (var i = 0; i < Veche1.length; i++) {
            var Find1 = false;
            for (var j = 0; j < Veche1.length; j++) {
              if (i == j) continue;
              if (Veche1[i][0]<Veche1[j][0]) {
                var Line1 = Veche1[i];
                Veche1[i] = Veche1[j];
                Veche1[j] = Line1;
                Find1 = true;
              }
            }
            if (!Find1) break;
          }
          if (!Find1) break;
        }
         VoteCnt1 = 0;
         for (var j = 1; j < Veche1.length; j++) {
           if (VoteCnt1 < Veche1[j].length -1) {VoteCnt1 = Veche1[j].length -1}}

         s2 = '';
         for (var i = 0; i < Veche1.length ; i++) {
           var s3 = '';
           var s4 = '';
           for (var j = 1; j < Veche1[i].length; j++) {
             s4 = s4 +'&nbsp;';
             s3 = s3 +Veche1[i][j];
             if (j != Veche1[i].length-1) {s3 = s3 +', '}
           }
           s2 = s2 +'<tr bgcolor=#ffffff><td width=70%>' +Veche1[i][0]
            +' ( ' +s3 +' ) ' +'</td>';
           s2 = s2 +'<td nowrap=nowrap width=5% align=center>'
             +(Veche1[i].length -1) +'</td>';
           s2 = s2 +'<td nowrap=nowrap width=100><font Color=blue '
            +'style="background-color:blue;">' +s4 +'</font></td>';
           s2 = s2 +'</tr>'
         }

        var s1 = ''
          +'<table class="dats" align=center bgcolor=#A0A0A0 border=0 cellpadding=3'
          +' cellspacing=1 width=95%><tbody><tr align=center bgcolor=#dddddd>'
          +'<td width=70%><b>\u0412\u043e\u043f\u0440\u043e\u0441\u0020\u0438\u0020\u043e\u0442\u0432\u0435\u0442\u0020\u0028\u0020\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u0432\u0448\u0438\u0435\u0020\u0029</b></td>'
          +'<td nowrap=nowrap width=5%><b>\u0413\u043e\u043b\u043e\u0441\u043e\u0432</b></td>'
          +'<td nowrap=nowrap width=100><b>\u0428\u043a\u0430\u043b\u0430</b></td>'
          +'</tr>'
          +s2
          +'</tbody></table>'
          +''
          ;

        if (PTag1 == null) {
          var TbTag1 = document.getElementsByTagName('table');
          for (var j = 0; j < TbTag1.length; j++) {
            if (TbTag1[j].className == 'tb') {
              PTag1 = document.createElement('p');
              PTag1.id = 'P1Vote';
              break;
            }
          }
          PTag1.innerHTML = s1;
          TbTag1[j].parentNode.insertBefore(PTag1, TbTag1[j]);
        } else {
          PTag1.innerHTML = s1;
        }
      }
    }
  }

  if (isUseVeche) {
    BTag1 = document.getElementsByTagName('b');
    for (var i = BTag1.length -1; i >= 0; i--) {
      if (BTag1[i].innerHTML == '\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435') {
        FntTg1 = document.createElement("font");
        FntTg1.innerHTML = '<a id=VoteLink1 href=javascript:AddVote1()'
         +' title="\u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0020\u0432\u0020\u0444\u043e\u0440\u043c\u0443\u0020\u043e\u0442\u0432\u0435\u0442\u0430\u0020\u0431\u043b\u043e\u043a\u0020\u0441\u0020\u0432\u0430\u0448\u0438\u0020\u0433\u043e\u043b\u043e\u0441\u043e\u043c\u0020\u0437\u0430\u0020\u0447\u0442\u043e\u002d\u043b\u0438\u0431\u043e\u002e"'
         +'>\u0413\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u0442\u044c</a>';
        BTag1[i].parentNode.appendChild(FntTg1);
        document.getElementById('VoteLink1').addEventListener("click",
         function() {AddVote1()}, false);
        break;
      }
    }
  }
  function AddVote1() {
    TATag1 = document.getElementById('post');
    if (TATag1 == null) {
      TATag1 = document.getElementsByName('post')
      TATag1 = TATag1[0];
    }
    if (TATag1 == null) { alert('\u0424\u043e\u0440\u043c\u0430\u0020\u043e\u0442\u0432\u0435\u0442\u0430\u0020\u043d\u0435\u0020\u043d\u0430\u0439\u0434\u0435\u043d\u0430\u002e')
    } else {
      var s = '';
      s = prompt('\u0412\u0432\u0435\u0434\u0438\u0442\u0435\u0020\u0432\u043e\u043f\u0440\u043e\u0441\u0020\u0438\u0020\u043e\u0442\u0432\u0435\u0442\u0020\u0437\u0430\u0020\u043a\u043e\u0442\u043e\u0440\u044b\u0439\u0020\u0432\u044b\u0020\u0445\u043e\u0442\u0438\u0442\u0435\u0020\u043f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u0442\u044c:'
        +'\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u003a\u0020\u041c\u043e\u0451\u0020\u043b\u044e\u0431\u0438\u043c\u043e\u0435\u0020\u0436\u0438\u0432\u043e\u0442\u043d\u043e\u0435\u0020\u002d\u0020\u043a\u043e\u0448\u043a\u0430', s);
      if(s!=null){
        TATag1.value = TATag1.value.substr(0,TATag1.selectionStart) +''
         +'[color=#A0A0A0][*][b]' +s +'[/b][/color]'
         +'\n' +TATag1.value.substr(TATag1.selectionEnd);
      }
    }
  }

  function InsertSel1() {
    var LastFindUserName = '';
    function FindPrnt1(aNode) {
      var PrNd1 = aNode.parentNode;
      if (PrNd1.tagName == undefined) {
        return PrNd1;
      }
      if (PrNd1.tagName.toLowerCase() == 'table') {
        if (PrNd1.className == "tb") {
          var TrT = PrNd1.getElementsByTagName('tr');
          if (TrT.length != 0) {
            var BTag = PrNd1.getElementsByTagName('b');
            if (BTag.length != 0) {
              LastFindUserName = BTag[0].innerHTML;
              return PrNd1;
            }
          }
        }
      }
      return FindPrnt1(PrNd1);
    }

    function FindRef1(TrNode) {
      var ATg1 = TrNode.getElementsByTagName('a');
      for (var i = ATg1.length -1; i>=0; i--){
        if (ATg1[i].href.indexOf('topic.cgi') >= 0) {
          var s1 = '';
          if ((LastFindUserName != '') && (ATg1[i].href != '')
              && (ATg1[i +1].innerHTML != ''))
          {
            s1 = ''
              +'[url='  +ATg1[i].href +']'
              +'[b]' +LastFindUserName +'[/b] '
              +'[/url]'
            ;
            return s1;
          }
        }
      }
      return '';
    }

    var Nd = FindPrnt1(window.getSelection().getRangeAt(0).startContainer.parentNode);
    if (Nd.tagName == undefined) { alert('\u0422\u0435\u0433\u0020\u043d\u0435\u0020\u043d\u0430\u0439\u0434\u0435\u043d\u002e')
    } else {
      var s1 = FindRef1(Nd);
      if (s1 == '') { alert('\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0020\u043d\u0435\u0020\u043d\u0430\u0439\u0434\u0435\u043d\u002e')
      } else {
        var s2 = window.getSelection().toString();
        if (s2 == '') { alert('\u041d\u0438\u0447\u0435\u0433\u043e\u0020\u043d\u0435\u0020\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043e\u002e\u0020\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u0435\u0020\u0442\u0435\u043a\u0441\u0442\u0020\u0438\u0020\u043d\u0430\u0436\u043c\u0438\u0442\u0435\u0020\u0435\u0449\u0451\u0020\u0440\u0430\u0437\u002e')
        } else {
          var s2 = '[quote]' +s2 +'[/quote]';
          TATag1 = document.getElementById('post');
          if (TATag1 == null) { alert('\u0424\u043e\u0440\u043c\u0430\u0020\u043e\u0442\u0432\u0435\u0442\u0430\u0020\u043d\u0435\u0020\u043d\u0430\u0439\u0434\u0435\u043d\u0430\u002e')
          } else {
            TATag1.value = TATag1.value.substr(0,TATag1.selectionStart)
              +'' +s1 +s2 +'\n'
              +TATag1.value.substr(TATag1.selectionEnd);
         }
        }
      }
    }

  }

})();

// SIGNATURE CHECKBOX //
//  $('input[name=signature]').prop('checked', true);
//  $('input[name=signature]').attr('checked', true);

// AUTO_FIX EDITING PANEL //
// var fixedpanel = document.getElementById('tags_panel');
// if (document.getElementById('fix_tg_pan') == null) {
//    $('#tags_panel>img:nth-child(1)').click();}
    // $('#tags_panel>img:nth-child(1)').trigger('click');}
// Variant #2
!!document.getElementById('fix_tg_pan') || document.querySelector('#tags_panel>img:nth-child(1)').click();


// КНОПКА СОХРАНЕНИЯ ТЕКСТА ПОСТА В ФАЙЛ //
// for(var i=0, a=document.querySelectorAll(".post"); i<a.length;i++)
// a[i].parentNode.firstChild.innerHTML=" <span id='"+i +"' class='lt' style=cursor:hand>Сохранить текст</span> | " + a[i].parentNode.firstChild.innerHTML;
// document.addEventListener("click",function(b){b=b.target;if("lt"==b.className)lt(b.id)});
//
// function lt(a){
// var c=document.createElement("a");
// var h=new Blob([document.location.href.split("#")[0]+"#"+(+a+1)+"<hr><p>"+document.querySelectorAll(".post")[a].innerHTML],{type:"text/html"});
// c.setAttribute("href",window.URL.createObjectURL(h));
// c.setAttribute("download",new Date().toTimeString().substr(0,8)+".htm");
// c.click();
// c.remove();
// }


// MsgPreview Butoon //
//  (function() {
//    var elem = document.getElementById('fix_tg_pan');
//    if (elem) {
//      var div = document.createElement('div');
//      div.id='MsgPreview';
//      var button = document.createElement('button');
//      button.innerText = 'MsgPreview';
//      //button.onclick = MsgPreviewFn
//      div.appendChild(button);
//      elem.appendChild(div);
//    }
//  })();
//
//
// var MsgPreviewFn = (function() {
//     var getTextarea=function(){var t,ta=document.getElementsByTagName('textarea');
//                                var tl=ta.length-1;
//                                do{t=ta[tl];tl--}
//                                while(t&&(t.rows<5||t.offsetHeight==0));
//                                return t
//                               };
//     var b,x,l,t,n,h,v,u='ujs_pv';
//     b=document.getElementById(u);
//     if(b){b.parentNode.removeChild(b);return};
//     x=navigator.lastFocusedTextArea||getTextarea();
//     if(!x)return;
//     l=x.offsetLeft;
//     t=x.offsetTop;
//     n=x;
//     while(n.offsetParent){
//         n=n.offsetParent;
//         l+=n.offsetLeft;
//         t+=n.offsetTop;
//         };
//     h=x.value.replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/%5Cn/g,'<br>').replace(/%5C[url=(.*%3F)%5C](.*%3F)%5C[%5C/url%5C]/gi,'<a href=%5Cx22$1%5Cx22>$2</a>').replace(/%5C[email=(.*%3F)%5C](.*%3F)%5C[%5C/email%5C]/gi,'<a href=%5Cx22mailto:$1%5Cx22>$2</a>').replace(/%5C[(center|left|right)%5C](.*%3F)%5C[%5C/%5C1%5C]/gi,'<div style=%5Cx22text-align: $1%5Cx22>$2</div>').replace(/%5C[((%3F:color|size)=.*%3F)%5C]/gi,'<font $1>').replace(/%5C[font=(.*%3F)%5C]/gi,'<font face=%5Cx22$1%5Cx22>').replace(/%5C[%5C/(color|size|font)%5C]/gi,'</font>').replace(/%5C[(%5C/%3F)quote%5C]/gi,'<$1blockquote>').replace(/%5C[(%5C/%3F)([bius]|code|hr|sup|sub|strike)%5C]/gi,'<$1$2>').replace(/%5C[img%5C](.*%3F)%5C[%5C/img%5C]/gi,'<img src=%5Cx22$1%5Cx22>');
//     v=document.createElement('div');
//     v.id=u;v.setAttribute('style','position:absolute;left:'+l+'px;top:'+t+'px;height:'+(x.offsetHeight-2)+'px;width:'+(x.offsetWidth-10)+'px;overflow:auto;background:white;padding:0 4px;border:1px solid gray;font:'+getComputedStyle(x,null).font);
//     v.innerHTML=h;document.documentElement.appendChild(v)
// });
//
// var MsgPreviewFn = (function(){
//     var b,x,l,t,n,h,v;
//     b=document.getElementById('ujs_pv');
//     if(b){b.parentNode.removeChild(b);return};
//     x=navigator.lastFocusedTextArea;
//     l=x.offsetLeft;t=x.offsetTop;
//     n=x;while(n.offsetParent){
//         n=n.offsetParent;
//         l+=n.offsetLeft;
//         t+=n.offsetTop;
//         };
//     h=x.value.replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\n/g,'<br>').replace(/\[url=(.*?)\](.*?)\[\/url\]/gi,'<a href=\x22$1\x22>$2</a>').replace(/\[email=(.*?)\](.*?)\[\/email\]/gi,'<a href=\x22mailto:$1\x22>$2</a>').replace(/\[(center|left|right)\](.*?)\[\/\1\]/gi,'<div style=\x22text-align: $1\x22>$2</div>').replace(/\[((?:color|size)=.*?)\]/gi,'<font $1>').replace(/\[font=(.*?)\]/gi,'<font face=\x22$1\x22>').replace(/\[\/(color|size|font)\]/gi,'</font>').replace(/\[(\/?)quote\]/gi,'<$1blockquote>').replace(/\[(\/?)([bius]|code|hr|sup|sub|strike)\]/gi,'<$1$2>').replace(/\[img\](.*?)\[\/img\]/gi,'<img src=\x22$1\x22>');
//     v=document.createElement('div');
//     v.id='ujs_pv';
//     v.style='position:absolute;left:'+l+'px;top:'+t+'px;height:'+(x.offsetHeight-2)+'px;width:'+(x.offsetWidth-10)+'px;overflow:auto;background:white;padding:0 4px;border:1px solid gray;font:'+getComputedStyle(x,null).font;
//     v.innerHTML=h;document.documentElement.appendChild(v)
// });
//
// var ButtonPreview = document.querySelector('#fix_tg_pan>img:nth-child(25)');
//     if (ButtonPreview) {
//         alert("ButtonPreview - GOOD");
//         // ButtonPreview.attachEvent('onclick', MsgPreviewFn);
//         // ButtonPreview.addEventListener('click', MsgPreviewFn , false);
//     }


//=========
//        if (UseHideLink) {
//            s2 = s2
//             +'<a class="tpc" title="Hide this block' +'"'
//             +' name="' +Btag[0].innerHTML +'"'
//             +' ID=AHideLink' +i
//             +' href=javascript:HidePost1("' +Btag[0].innerHTML +'")'
//             +'>[-]</a> '
//           ;
//          }
//=========

//=========
// for(var i=0,a=document.querySelectorAll(".post");i<a.length;i++)
//     a[i].parentNode.firstChild.innerHTML=" <span id='"+i +"' class='lt' style=cursor:hand>Сохранить текст</span> | " + a[i].parentNode.firstChild.innerHTML;
//
// document.addEventListener("click",function(b){b=b.target;if("lt"==b.className)lt(b.id)});
//
// function lt(a){var c=document.createElement("a");
// h=new Blob([document.location.href.split("#")[0]+"#"+(+a+1)+"<hr><p>"+document.querySelectorAll(".post")[a].innerHTML],{type:"text/html"});
// c.setAttribute("href",window.URL.createObjectURL(h));
// c.setAttribute("download",new Date().toTimeString().substr(0,8)+".htm");
// c.click();
// c.remove()}
//=========

NikosColev пишет

При этом с Tampermonkey ничего подобного не происходит.

Дык и используй Tampermonkey, или ты их сразу две набУхал?:D

voqabuhe, не, две бухнуть в голову не приходило. Какой менеджер буду использовать пока не решил. С остальными скриптами в Greasemonkey проблем не вижу, как минимум, хотелось бы понимать что не так в нем с Ru-Board Helper, но решить проблему было бы лучше.

NikosColev
Да я смотрю, все вроде как активно переходят на Tampermonkey на новых версиях [firefox] и именно оно везде рекомендуется. Мне оно тоже показалось удобнее. А решать ещё и проблемы дополнений, когда есть аналоги как минимум не хуже, ну просто нет никакого смысла.

voqabuhe, я использовал Tampermonkey из-за возможности работы в режиме мгновенного инжектирования необходимого для RU AdList JS Fixes, больше такой необходимости нет. Проще, часто не только не хуже.

NikosColev
Не, ну если нравиться пользуйся Greasemonkey, кто ж против. Может оно и не хуже, подумаешь две панельки на ру-борде, какая мелочь, да и всяко две больше чем одна. :lol:

voqabuhe, спасибо за разрешение, буду признателен, если кто выскажется по сути вопроса.

Внимание, вопрос знатокам.
Какой код открытия боковой панели?

vending_machine пишет

Внимание, вопрос знатокам.
Какой код открытия боковой панели?

Минута пошла

Доброго времени суток.
Необходима помощь со скриптом для Youtube.
Надобно, чтобы при нажатии на канал из списка подписок (из сайдбара) по умолчанию открывалась секция/вкладка Видео(Videos) вместо дефолтной Главная(Home).


Предисловие.
Подобная фича была реализована в одной из предыдущих версий расширения Iridium (версия 0.25). Прям в интерфейсе настроек
https://addons.mozilla.org/ru/firefox/a … m/versions

Суть в том, что вкладка Видео(Videos) открывалась автоматический при клике на канал из подписок БЕЗ общего рефреша/релоада страницы.
037edcaeee7050f8f80e4d97a79f454a.png
Если не ошибаюсь в функции default_channel_tab (файл Iridium.user.js)


Расширение сейчас переживает не лучшие времена: его переписывают с ноля, скорость разработки не очень быстрая, а со старой версией начались проблемы совместимости.
По правде говоря именно интересующая меня фича сейчас всё ещё работает если скачать упомянутую выше версию.
На просторах интернета нашел вот такую реализацию скрипта.
https://greasyfork.org/zh-CN/forum/disc … e-channels
Но вот в ней присутствует тот самый еффект общего рефреша/релоада страницы, что вызывает дискомфорт.


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


P.S. Что-то теги spoiler и noindex отказываются работать...

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

Наверное именно поэтому происходит рефреш/релоад и не понятно как может быть по другому.

_zt
Думаю при должно сноровке можно и без рефреша сделать. Собственно в расширении оно без него работает...

Подскажите, почему может не срабатывать любой скрипт при старте браузера на домашней странице?
Mozilla Firefox 76
Greasemonkey 4.9
Скрипт любой, вплоть до


// ==UserScript==
// @name     Hello
// @version  1
// @grant    none
// ==/UserScript==

alert("HELLO");


Домашняя страница любая
Если нажать F5, то дальше срабатывает как часы. Но мне нуно чтобы он был запущен сразу при старте браузера.
При том иногда, примерно раз из 10 запусков скрипт срабатывает сразу, без обновления страницы.

Andrey4 пишет

почему

Не заю. Но можно задать задержку.

Выделить код

Код:

// ==UserScript==
// @name     Hello
// @version  1
// @grant    none
// ==/UserScript==

(function(){
	setTimeout(function(){
		alert("HELLO")();
	}, 3000);
})();

Andrey4, добавь в шапку

Выделить код

Код:

// @run-at                      document-end
ifln пишет

Не заю. Но можно задать задержку.

К сожалению не работает.


mokujin пишет

добавь в шапку

Выделить код

Код:

// @run-at                      document-end

Тоже не работает.


Пришлось перейти на Tampermonkey, там всё отрабатывает как часы. Спасибо за помощь.

всем привет. еще в 2017 году (пост https://forum.mozilla-russia.org/viewtopic.php?pid=733849#p733849) комраду помог некий способ, который не проканал у меня,
ситуация та же - RSS Feedbro при настройках отображения новости прямо в ридере новость не отображает - появляется Похоже, вас пытаются обмануть
frame's hostname: rutracker.org
пользуюсь Tampermonkey, помогите допилить прошлый скрипт, чтобы убрать блкировку и вернуть отображение страницы

скрин

_333909d3180a397f2d0b1070f755f9da.jpeg

Mrakobes666 пишет

всем привет. еще в 2017 году (пост https://forum.mozilla-russia.org/viewtopic.php?pid=733849#p733849) комраду помог некий способ, который не проканал у меня,

Я до сих пор им пользуюсь на стареньком 56.0.2.

leshiy_odessa дружище, в двух словах подскажи как это реализовать, у мена ток не 56 а квантум и темпермонкей, какая инструкция - создать новый скрипт, вставляю (заменяя то что там типа шаблона) - но ТМ неактивен в этом окне, где Feedbro

кстати пока я был на даче изменилось сообщение

скрытый текст
Заблокировано политикой защиты содержимого

При соединении с rutracker.org произошла ошибка.

Firefox заблокировал данный способ загрузки этой страницы, так как страница имеет политику защиты содержимого, которая это запрещает.

Mrakobes666 пишет

подскажи как это реализовать, у мена ток не 56 а квантум

Без понятия.

leshiy_odessa пишет

Без понятия.

вот что ответил автор расширения (перевод)

Этот сайт создается таким образом, что он "обнаруживает", когда он встроен в iframe. Тут уж ничего не поделаешь.
Однако вы можете добавить ленту и выбрать пункт "получить полное тело статьи" в раскрывающемся списке "содержимое записи ленты" (диалоговое окно "добавить ленту"). Затем вы можете использовать режим просмотра 3, и вы все еще видите содержимое статьи, и оно может быть обработано по правилам.

как побороть iframe то?

Встроенный переводчик Firefox показывает панель перевода на...неруских сайтах. Можно сделать аналогичное срабатывание скрипта? Что-бы скрипт срабатывал везде, кроме русскоязычных, или с указанным списков кодов стран.
Сам скрипт: Google Translation Bar

oleg.sgh
в общем случае это сложно. атрибут lang не все ставят. например на этом форуме его нет.
можно частично скрыть панель, напримор если адрес ru или есть lang.
но вообще сама идея - везде вставлять этот хлам - глупая.

CoolCmd пишет

атрибут lang не все ставят. например на этом форуме его нет.

Вот и ответ. А то было непонятно, почему встроенный переводчик подхватывает не все сайты.

CoolCmd

везде вставлять этот хлам - глупая.

Спасибо, что пользуетесь API Яндекс.Переводчика.
С 31 июля 2020 года вы сможете бесплатно переводить 50 000 символов в день, а с 15 августа 2020 года мы закрываем доступ к бесплатному API Яндекс.Переводчика.

Ищу варианты.

oleg.sgh нужно полноценное расширение, которое переводит по нажатию кнопки на панели браузера.

CoolCmd
Я нашел лучше. Переводит автоматом с указанного языка.
Перевод веб-страниц

oleg.sgh
Перевод плохой, часть не переведенным остается. И сдается мне оно отслеживает все посещения.

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

oleg.sgh
Есть скрипт, который открывает ссылки в текущей вкладке(все, несмотря на trget и проя.) Не мой, чуть подправил, чтоб СКМ не отлавливал. Можешь поменять его логику:

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name          Open links in current tab
// @author        wOxxOm
// @description   Open links in current tab regardless of _target or site's preferences. Ctrl-click: background tab, Ctrl-Shift-click: foreground tab, Shift-click: new window, Alt-click: force open in current tab
// @namespace     http://target._blank.is.retarded
// @version       2.2.7
// @include       *
// @exclude             http*coub.com/*
// @exclude             http*vk.com/*
// @exclude             http*.userapi.com/*
// @exclude             http*.youtube.com/*
// @exclude             http*.googlevideo.com/*
// @run-at        document-start
// @grant         GM_openInTab
// ==/UserScript==

if (window == top) {
    window.addEventListener('message', function(e) {
        // some stupid sites choke on object data
        if (!/^\{/.test(e.data)) return;
        let data = tryParse(e.data);
        if (data.name == GM_info.script.name) navigate(data.url);
     });
   }

   let suppressing, clickedElement, link;

window.addEventListener('mousedown', function(e) { clickedElement = e.target; }, true);

window.addEventListener('mouseup', function(e) {
// Убрал действие на СКМ только ПКМ отслеживаеццо
//    if (e.button > 1 || e.target != clickedElement)
        if (e.button != 0 || e.target != clickedElement) return;
             link = pierceShadow(e);
        if (!link || (link.getAttribute('href') || '').match(/^(javascript|#|$)/) || !document.contains(link)) return;

    let b = e.button, c = e.ctrlKey, a = e.altKey, s = e.shiftKey, m = e.metaKey;
    if (b == 1 || c && !a && !m)      // вот здесь надо начинать шаманить, менять условия КМК
        GM_openInTab(link.href, !s || b == 1);
    else if (window.chrome && b === 0 && s && !c && !a && !m)
        link.cloneNode().dispatchEvent(new MouseEvent('click', {shiftKey: true}));
    else if (!c && !s && !m && !a) {
        if (link.target == '_blank')
            link.target = '';
            blockWindowOpenAndMutations(link);
            return;
          } else return;

    suppressing = true;
    prevent(e);
 }, true);

window.addEventListener('click', prevent, true);
window.addEventListener('auxclick', prevent, true);

function prevent(e) {
    if (!suppressing) return;
    e.preventDefault();
    e.stopPropagation();
    e.stopImmediatePropagation();
    setTimeout(function() {
        suppressing = false;
    }, 50);
}

function blockWindowOpenAndMutations(link) {
    let observer = new MutationObserver(function() {
        if (link.target == '_blank') {
            link.removeAttribute('target');
            console.log('[Open links in current tab] prevented dynamic target=_blank for', link.href);
            navigate(link.href);
        }
    });
    observer.observe(link, {attributes:true, attributeFilter:['target'], characterData:true});

    let _open = unsafeWindow.open;
    let timeout = setTimeout(function() {
        unsafeWindow.open = _open;
        observer.disconnect();
    }, 50);

    unsafeWindow.open = exportFunction(function(url, name, features) {
        if (!features) {
            console.log('[Open links in current tab] prevented window.open for', url);
            navigate(link.href);
        } else {
              _open(url, name, features);
              unsafeWindow.open = _open;
              clearTimeout(timeout);
             }
    }, unsafeWindow);
}


function pierceShadow(e) {
    let el = e.target;
       while (el.shadowRoot) el = el.shadowRoot.elementFromPoint(e.clientX, e.clientY);
    return el.closest('a');
   }

function navigate(url) {
    if (window == top) {
        link = document.createElement('a');
        link.href = url;
        link.dispatchEvent(new MouseEvent('click'));
    } else { top.postMessage(JSON.stringify({name: GM_info.script.name, url: url}), '*'); }
}

function tryParse(str) {
    try { return JSON.parse(str); }
    catch(e) {}
}

mokujin

вот здесь надо начинать шаманить

Если бы ещё знать что шаманить. В таком виде скрипт не работает.
Кстати, этот  скрипт я видел, но не хватило тяму выкинуть его плюшки с модификаторами и СКМ.

oleg.sgh
Попробуй, хз работает, нет, давно пользовался

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Acid Crash
Скрипт перестал работать для каналов не из рекомендаций. У него, помимо проверки по окончанию "/featured", есть еще проверка по суффиксам /chennel/ и /user/, а теперь появился новый /c/. Добавил новый суффикс "c", вроде работает.
   

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name          YT channel shows Videos
// @match         https://www.youtube.com/*
// @run-at        document-start
// @license       MIT License
// @grant         none
// ==/UserScript==

(() => {
  const RX_CHANNEL_HOME = /^(https?:\/\/www\.youtube\.com\/(user|c|channel)\/[^/]+)(\/?$|\/featured)/;
  if (RX_CHANNEL_HOME.test(location.href)) {
    location.href = RegExp.$1 + '/videos';
    return;
  }
  addEventListener('mousedown', event => {
    const a = event.target.closest('a');
    if (a && RX_CHANNEL_HOME.test(a.href)) {
      a.href = RegExp.$1 + '/videos';
      try { a.data.commandMetadata.webCommandMetadata.url = a.href; } catch (e) {}
    }
  }, true);
})();

Stkvsky
Не, через раз. Мне yup делал рабочий, но он неудобен в добавлении сайтов. Надо добавлять в двух местах. Хотелось бы сайты добавлять только в @include кода или в @include настройках скрипта.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        YandexTV
// @namespace   YTV
// @include     http*://tv.yandex.ru/*
// @version     1
// @grant       none
// ==/UserScript==
function getAnchor(element) {
  while (element && element.nodeName != "A") element = element.parentNode;
  return element;
}

document.addEventListener("click", function(e) {
  var hosts = [
        "tv.yandex.ru"
      , "domain1.abc"
      , "domain2.def"
      ];
  var anchor = getAnchor(e.target);
  if (hosts.indexOf(anchor.hostname) >= 0) anchor.target = "_blank";
});

oleg.sgh

Выделить код

Код:

// ==UserScript==
// @name        Open Links In New Tab
// @namespace   Open Links In New Tab
// @include     http*://tv.yandex.ru/*
// @grant       none
// @run-at      document-start
// ==/UserScript==

document.addEventListener("click", (e) => {
    const anchor = e.target.closest("a[href]");
    if (anchor) anchor.target = "_blank";
});

sn260591
Как то так. Благодарю.

leex пишет

ЗдравствуйтеС недавних пор Яндекс включил на своем сайте "Яндекс новости" фичу которая напрягает своей навязчивостью.Это автопрокруткаОчень стало неудобно.Я читаю несколько версий по теме из разных изданий, открываю и читаю страницу любой конкретной новости. Там есть список ссылок под заголовком "Подробнее о событии"Кликаю по любой из этих ссылок, она открывается в новом окне. потом возвращаюсь на исходную страницу, чтобы открыть другое СМИ, но страница  уже прокручена вниз, чтобы я увидел и прочитал неинтересные мне новости.Приходится каждый раз листать вверх, чтобы отыскать первоначальную новость.Думаю что выполняется какой то скрипт на яндекс новостях.Может быть кто-нибудь посоветует скрипт способный заблокировать этот скрипт с автопрокруткой?
                    Отредактировано leex (18-10-2018 01:33:03)

CoolCmd пишет

leex похоже на глюк йандекса. вот это попробуй:
// ==UserScript==
// @name     CoolCmd
// @version  1
// @match    https://news.yandex.ru/*
// @grant    none
// @run-at   document-start
// ==/UserScript==
'use strict';
window.addEventListener(
  'click',
  e =>
  {
    if (e.button === 0
    && !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey
    && e.target.closest('a[href].link_agency'))
    {
      e.stopImmediatePropagation();
      e.stopPropagation();
    }
  },
  true
);

CoolCmd
Здравствуйте!
Ваш код к сожалению перестал работать. На яндекс новостях странца снова  прокручиваестся вниз((

Сможете ли подправить?

leex
Замените
// @match    https://news.yandex.ru/*
на
// @match    https://yandex.ru/news/*
И ещё
.link_agency
на
.news-story__meta

Вроде так работает.

xrun1
Спасибо за содействие, но не работает

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

leex
.news-story__meta - это  для линка "В источнике". У меня открывается новый таб, старый не прокручивается. А Вы как открываете? Если я кликаю просто по новости, она у меня открывается в том же табе.

Я кликаю стандартно: по новости ЛКМ
Открывается новый таб с новостью. Этот таб становится активным (на экране его содержимое)
Исходная вкладка остается открытой

Часто, когда прочту - возвращаюсь на предыдущую открытую вкладку с новостями, но эта страница уже прокручена вниз на другие новости.
Код от уважаемого CoolCmd прекрасно блокировал эту прокрутку, но неск дней назад я заметил что этот код перестал работать.

Код CoolCmd работает только для Янлекс.Новости. Проверил, у меня ничего не прокручивается. Прокручивалось только при клике по линку в конце текущей новости "В источнике", но это я поправил кодом выше. Если Вы используете для чтения новостей другой сайт, то этот скрипт бесполезен.

к сожалению прокручивается.
Но не прокручивается если нажать "В источнике" .news-story__meta видимо срабатывает
Кстати, может быть не работает от того, что я использую этот скрипт внутри Tampermonkey а не в  Greasemonkey?
Эти две оболочки вроде как альтернативы друг друга, и до недавнего времени в Tampermonkey этот скрипт справлялся с прокруткой на яндекс новостях

скрытый текст
// ==UserScript==
// @name     CoolCmd
// @version  1
// @match    https://yandex.ru/news/*
// @grant    none
// @run-at   document-start
// ==/UserScript==
'use strict';
window.addEventListener(
  'click',
  e =>
  {
    if (e.button === 0
    && !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey
    && e.target.closest('a[href].news-story__meta'))
    {
      e.stopImmediatePropagation();
      e.stopPropagation();
    }
  },
  true
);

leex
Пользуюсь Tampermonkey. К сожалению, не могу воспроизвести Вашу ситуацию. Попробуйте такой вариант скрипта, хотя это, конечно, бред.:) Закомментировал лишнее, оставил только событие 'click'. То есть когда кликаем - ничего не крутим.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name         Stop scrolling on Yandex
// @author       CoolCmd
// @namespace    https://forum.mozilla-russia.org/viewtopic.php?pid=762360#p762360
// @description  Не прокручивать страницу в Яндекс.Новости при клике по ссылке "В источнике"
// @icon         https://yandex.ru/favicon.ico
// @version      1
// @match        https://yandex.ru/news/*
// @match        https://yandex.ru/sport/*
// @grant        none
// @run-at       document-start
// ==/UserScript==
'use strict';
window.addEventListener(
  'click',
  e =>
  {
//    if (e.button === 0
//    && !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey
//    && e.target.closest('a[href].news-story__meta'))
//    {
      e.stopImmediatePropagation();
      e.stopPropagation();
//    }
  },
  true
);


Если не поможет, попробуйте вообще остановить загрузку страницы, только не знаю, к чему это приведёт. Добавьте строчку window.stop()
скрытый текст

Выделить код

Код:

e.stopImmediatePropagation();
      e.stopPropagation();
      window.stop();


Других идей у меня нет.

xrun1 пишет

К сожалению, не могу воспроизвести Вашу ситуацию

Да и у меня тоже проблема с прокруткой на Янлекс.Новости, здесь это происходит, в Подробнее о событии (англичанка гадит :D). Я так тоже понимаю, что это глюк Яндекса, когда началось не помню, с тех пор как раз видимо, но у меня он не исчезал :D По ЛКМ, ссылка открывается в новой вкладке и родительская страница немного прокручивается вниз. По СКМ, ссылка открывается в новой вкладке, но прокрутки страницы не происходит. Записал видео проверки на чистом профиле [firefox]

скрытый текст
ef9e214c1576.jpg

xrun1 пишет

Закомментировал лишнее, оставил только событие 'click'. То есть когда кликаем - ничего не крутим

Ваш скрипт сработал (в Tampermonkey), прокрутки по ЛКМ нет, только перестала работать кнопка "Показать ещё"
Надо будет всё же в поддержку писать, опыт уже имеется, и похоже исправлять косяк они не собираются.

xrun1 пишет

Попробуйте такой вариант скрипта, хотя это, конечно, бред.:)

А по мне так не бред, а отличный скрипт - главное, то что он работает!
Уже радует, Большое Вам спасибо!

sandro79 пишет

только перестала работать кнопка "Показать ещё"

Подтверждаю. неприятная мелочь

sandro79 пишет

Я так тоже понимаю, что это глюк Яндекса

Мне кажется, что это не глюк, а злонамеренный маркетинговый прием.
Схож с рекламой - "подсовывают и втюхивают" новости

Господа, помогите пожалуйста!
Есть необходимость скрывать посты пользователей (ботов) на форуме. (forum.onliner.by)
Раньше пользовался таким скриптом, в основном в Tampermonkey
// ==UserScript==
// @name onliner
// @namespace onliner
// @description onliner
// @include http://forum.onliner.by/*
// @exclude %exclude%
// @version 13
// @grant none
// ==/UserScript==
try{
if($('#p93083103')) {
$('#p93083103').css({position:'absolute',top:'0px',left:'0px',display:'none'});
}
}catch(e){
}
try{
if($("div[data-user_id=2095842]")) {
$("div[data-user_id=2095842]").parent('li').css({position:'absolute',top:'0px',left:'0px',display:'none'});
}
}catch(e){
}


-------------///////////////////////
data-user_id=2095842 - это номер пользователя, который написал какой-то пост на форуме

при появлении очередного мерзавца, я просто добавлял эти строки в скрипте и менял номер пользователя
try{
if($("div[data-user_id=2095842]")) {
$("div[data-user_id=2095842]").parent('li').css({position:'absolute',top:'0px',left:'0px',display:'none'});
}
}catch(e){
}



раньше все работало, но сейчас на знаки $ ругается - пишет '$' - is nod defined
что-то поменяли на форуме и вот результат (

leex, sandro79
Вот я влез не в свою тему! :) Я ведь не java-программист. Просто бывший программист с большим опытом. Где-то здесь уже писал, что свой скрипт на java написать не смогу, но искорёжить чужой - запросто! ;) Попробуйте, должен срабатывать только на ссылках "В источнике" или в блоке "Подробнее о событии".

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name         Stop scrolling on Yandex
// @author       CoolCmd
// @namespace    https://forum.mozilla-russia.org/viewtopic.php?pid=762360#p762360 , https://forum.mozilla-russia.org/viewtopic.php?pid=784579#p784579
// @description  Не прокручивать страницу в Яндекс.Новости при клике на ссылку "В источнике" или на ссылках в блоке "Подробнее о событии"
// @icon         data:image/x-icon;base64,AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADR0dG30tLSudHR0bzQ0NC+z8/Pwc/Pz8PIyMjHysrKycfHx8zExMTPw8PD0cDAwNTAwMDWvb292by8vNy6urreuLi44ba2tuO2trblsrKy6LKysuqwsLDtra2t8KysrPOsrKz0qqqq+KmpqfqoqKj8AAAAAwAAAAAAAAAAAAAAANLS0rXQ0NC40tLSutDQ0L3Ozs6/zc3NwsrKysXJycnHx8fHysLCws7CwsLQwcHB0sDAwNW9vb3Yurq627m5ud22trbgtra24rS0tOWysrLnsLCw6bCwsOuurq7urKys8aqqqvOqqqr1qamp+KampvoAAAAQAAAAAAAAAAAAAAAA0tLStNHR0bfR0dG40dHRu83Nzb7Nzc3AysrKxMbGxsbExMTKw8PDzMHBwc69vb3Svr6+1Ly8vNa7u7vZuLi427e3t960tLThs7Oz47KysuWwsLDorq6u6qysrO2rq6vuqqqq8qioqPSoqKj2p6en+QAAAB0AAAAAAAAAAAAAAADR0dGy0tLStNHR0bfQ0NC6zs7Ou8rKyr/JycnCx8fHxcTExMjCwsLKwMDAzr6+vtC7u7vTu7u71bq6ute4uLjatra23bS0tN6ysrLhsrKy5K+vr+atra3pra2t66urq+6pqanwqamp86enp/WlpaX3AAAAKwAAAAAAAAAAAAAAANLS0rHR0dGz09PTtc3NzbgzM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///ubm51re3t9lUVFTtU1NT7lNTU+9TU1Pwr6+v5a2treesrKzpq6ur7KioqO6np6fxp6en86SkpPYAAAAyAAAABwAAAAAAAAAA0tLSr9HR0bLS0tK0zs7OtjMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//+4uLjVtbW12AAAAP8AAAD/AAAA/wAAAP+tra3krKys56urq+ipqanrqKio7aampu+lpaXxo6Oj9QAAADMAAAAWAAAAAAAAAADS0tKu0tLSr9HR0bLPz8+1MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//7i4uNO1tbXWtLS02bGxsduwsLDer6+v4K6uruKrq6vlqqqq56ioqOqmpqbrpaWl7qSkpPGjo6PzAAAANAAAACUAAAAAAAAAANPT06zT09Ou0dHRsc/Pz7MzM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///tra20rW1tdVRUVHrUVFR7FFRUe1QUFDuUVFR71FRUfBQUFDyUFBQ86ampuqlpaXto6Oj76GhofIAAAA0AAAAMwAAAAEAAAAA0tLSqtPT06zS0tKv0dHRsTMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//+zs7PRsrKy1AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/pqam6aOjo+yioqLtoqKi8AAAADUAAAA3AAAADQAAAADT09Oo1NTUq9PT063R0dGwMzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//7S0tNCzs7PTsrKy1LCwsNeurq7ZrKys3Kqqqt+oqKjhp6en46ampuakpKToo6Oj6qKiouygoKDvAAAANgAAADgAAAAdAAAAANLS0qbV1dWp0dHRrNPT064zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///s7OzzrCwsNJQUFDpUFBQ6k9PT+tPT0/sUFBQ7U5OTu9OTk7wTk5O8aOjo+ejo6PpoaGh65+fn+0AAAA3AAAAOQAAAC4AAAAA1NTUpdPT06jS0tKq1NTUrDMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//+xsbHOsbGx0QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/o6Oj5aKiouegoKDqn5+f7AAAADcAAAA5AAAAPAAAAATT09Ok1NTUptPT06nS0tKrMzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//7KyssywsLDPrq6u0a6urtOsrKzWqqqq2KmpqdumpqbdpKSk4KKiouKioqLkn5+f556enuidnZ3rAAAAOAAAADoAAAA8AAAAFNPT06LU1NSl09PTp9PT06kzM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///sbGxy6+vr81NTU3nTk5O6E5OTulNTU3rTU1N7ExMTO1MTEzuTExM76KiouOgoKDmnp6e6J6enuoAAAA5AAAAOwAAAD0AAAAm1NTUoNXV1aPU1NSl09PTqDMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//+vr6/Kr6+vzAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/oKCg4p+fn+SdnZ3mnJyc6AAAADoAAAA8AAAAPgAAADjU1NSf1NTUodPT06TS0tKm0tLSqdLS0qvS0tKu0tLSsdHR0bLS0tK10NDQuNDQ0LrR0dG80NDQv8/Pz8HPz8/Ez8/PxtDQ0MnPz8/Lz8/Pzs7OztDOzs7Sz8/P1c7OztfOzs7azc3N3M7Ozt/Ozs7hAAAAAAAAAAAAAAAAAAAAANXV1Z3S0tKg1dXVotLS0qXT09On0tLSqtHR0azS0tKv0tLSsdLS0rTS0tK10dHRuNLS0rrQ0NC90dHRwNDQ0MLPz8/F0NDQx9DQ0MnOzs7Mz8/Pzs/Pz9HPz8/Tz8/P1c/Pz9jOzs7bzc3N3c3NzeAAAAAAAAAAAAAAAAAAAAAA09PTnNXV1Z7U1NSh1dXVowAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/z8/P1s7OztnPz8/bzs7O3gAAAAAAAAAAAAAAAAAAAADW1taa1dXVndTU1J/U1NShAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Ozs7Vzs7O187OztrNzc3cAAAAAAAAAAAAAAAAAAAAANXV1ZjU1NSb1dXVndTU1KAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/9DQ0NPOzs7Wz8/P2M7OztsAAAAAAAAAAAAAAAAAAAAA1tbWl9TU1JrV1dWc1dXVntTU1KHT09Oj0tLSptPT06jR0dGr09PTrdLS0q/R0dGy0tLStNHR0bfS0tK50dHRvNHR0b7Pz8/B0dHRw87OzsbQ0NDI0NDQytDQ0MzQ0NDPz8/P0c/Pz9TOzs7Xzs7O2QAAAAAAAAAAAAAAAAAAAADW1taV1dXVmNTU1JrT09Od1dXVntTU1KHT09Ok09PTp9PT06nU1NSr0tLSrtLS0rHR0dGy0tLStdDQ0LjQ0NC60dHRvNDQ0L/Q0NDCz8/PxM/Pz8bQ0NDJz8/Py9DQ0M7Pz8/Qzs7O0s/Pz9XPz8/YAAAAAAAAAAAAAAAAAAAAANbW1pTW1taW1dXVmNbW1pvT09Oe0tLSoNXV1aLS0tKl09PTp9LS0qrT09Os0tLSr9LS0rHS0tK00dHRttHR0bjS0tK70NDQvdHR0cDQ0NDD0NDQxdDQ0MfQ0NDJzs7OzM/Pz87Pz8/Rzs7O1M7OztYAAAAAAAAAAAAAAAAAAAAA19fXktbW1pXV1dWX1NTUmtPT05zV1dWe1NTUodXV1aPS0tKm09PTqNLS0qvT09Ot09PTr9HR0bLS0tK00dHRt9DQ0LrR0dG80NDQvs/Pz8HQ0NDDz8/PxtDQ0MjR0dHLzs7OzdDQ0M/Nzc3Sz8/P1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////8AAAAHAAAABwAAAAcAAAAHAAAAAwAAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA//////////////////////KAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0tLSt9HR0bzNzc3CyMjIx8XFxc3CwsLRvb2917m5ud22trbhs7Oz5rCwsOusrKzwqamp9aampvoAAAAFAAAAANDQ0LTS0tK5y8vLv8jIyMTCwsLKv7+/z7y8vNW4uLjat7e33rGxseOurq7oq6ur7qmpqfKmpqb2AAAAFAAAAADS0tKxz8/PtjMz//8zM///MzP//zMz//8zM///uLi41wAAAP8AAAD/rKys5qmpqeqmpqbvo6Oj9AAAACUAAAAA0tLSrtDQ0LMzM///MzP//zMz//8zM///MzP//7W1tdWxsbHar6+v3qysrOOoqKjnpaWl7KOjo/EAAAA0AAAAAtHR0avQ0NCvMzP//zMz//8zM///MzP//zMz//+zs7PSAAAA/wAAAP8AAAD/AAAA/6Ojo+mfn5/vAAAAOAAAABDT09Oo09PTrDMz//8zM///MzP//zMz//8zM///srKy0K2trdSrq6vaqKio3qWlpeOioqLnoKCg6wAAADkAAAAj09PTpNPT06kzM///MzP//zMz//8zM///MzP//7CwsMwAAAD/AAAA/wAAAP8AAAD/oKCg5Z2dnekAAAA6AAAANtTU1KHS0tKm0tLSq9LS0rDS0tK00NDQutHR0b7Q0NDD0NDQyNDQ0M3Ozs7S0NDQ183NzdzOzs7gAAAAAAAAAADT09Oe09PTowAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Pz8/Yz8/P3QAAAAAAAAAA1NTUmtLS0qAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/zs7O1c7OztoAAAAAAAAAANbW1pfV1dWc1NTUodLS0qbU1NSr0tLSr9LS0rTQ0NC60dHRvtHR0cPQ0NDJ0NDQzc7OztLOzs7XAAAAAAAAAADX19eU1dXVmdPT057V1dWj09PTqNPT063R0dGy0dHRt9HR0bvR0dHA0NDQxdDQ0MrPz8/Pzs7O1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAP//AAD//wAA
// @version      1
// @match        https://yandex.ru/news/*
// @match        https://yandex.ru/sport/*
// @match        https://dzen.ru/news/*
// @match        https://dzen.ru/sport/*
// @grant        none
// @run-at       document-start
// ==/UserScript==
'use strict';
window.addEventListener(
  'click',
  e =>
  {
      let in_source = e.target.closest('a[href].mg-story__meta'); // ссылка "В источнике"
      let published_in = e.target.closest('a[href].mg-story__doc-reference'); // ссылка в блоке "С чего всё началось" типа "опубликовал в Instagram"
      let from_agency = e.target.closest('a[href].mg-snippet__agency-info'); // ссылка в блоке "С чего всё началось" типа источник
      let from_group_source = e.target.closest('a[href].mg-snippets-group__source'); // 27.10.2021 источник из группы новостей
      let more_about_events = e.target.closest('a[href].mg-snippet__url'); // ссылки "Подробнее о событии"
      let in_source_sport = e.target.closest('a[href].news-story__meta.link'); // ссылка "В источнике" для /sport/
      let about_events_show_more = e.target.closest('a[href].news-card-snippet__info-link'); // ссылки "Подробнее о событии" для /sport/
      let subtitle_text = e.target.closest('a[href].news-story__subtitle'); // 16.11.2021 ссылки "текст в подзаголовоке"
      let new_redesign1 = e.target.closest('a[href].news-redesign-link_desktop.news-redesign-link_primary.Link'); // 28.12.23 главная ссылка
      let new_redesign2 = e.target.closest('a[href].news-redesign-link_desktop.news-redesign-link_tertiary.Link'); // 28.12.23 другие ссылки
      if (in_source || published_in || from_agency || from_group_source || more_about_events || in_source_sport || about_events_show_more || subtitle_text || new_redesign1 || new_redesign2)
    {
      e.stopImmediatePropagation();
      e.stopPropagation();
    }
  },
  true
);


Иконку к скрипту для Яндекс.Новости прицепить не смог, она у них в base64. Может потом найду способ, пока иконка Яндекса.
kabano
Проверить не могу, только предположение. На сайте могли ввести новые правила и символ "$" - знак доллара теперь надо экранировать. Попробуйте перед этим символом везде вставить обратный слэш "\" (без кавычек, разумеется).

P.S. И, кстати, это не глюк Яндекса, а вполне сознательная политика. При клике на ссылку экран прокручивается на видимую высоту. Вот код их функции

Выделить код

Код:

function(e) {
  if (!(/mac os/i.test(navigator.userAgent) ? e.metaKey : e.ctrlKey)) {
    var t = R.current.clientHeight + R.current.offsetTop + ze.d;
    t && window.scrollTo(0, t), Object(He.a)(Ze.c.RESET_OFFSET)
  }
}
xrun1 пишет

Попробуйте, должен срабатывать только на ссылках "В источнике" или в блоке "Подробнее о событии"

Огромное Спасибо! Работает! Побочных последствий вроде не выявлено. А иконка к скрипту и такая сойдёт, главное скрипт работает!
Я вчера написал в поддержку Яндекса, прикрепил видео, и уже получил письмо от робота с рекомендуемыми ссылками :D
Посмотрим что они скажут в итоге, но если это вполне сознательная политика, то исправление ждать не стоит, и придётся дальше использовать скрипт.

kabano пишет

Господа, помогите пожалуйста!
Есть необходимость скрывать посты пользователей (ботов) на форуме. (forum.onliner.by)

Проще через юблок блокировать

Выделить код

Код:

forum.onliner.by###p93083103
forum.onliner.by##li:has(> div[data-user_id="2095842"])

sn260591, спасибо!
работает!

xrun1
Большое спасибо!
Скрипт прекрасно останавливает прокрутку на новостях яндекса.
Багов и побочек не наблюдаю
Круто :D

xrun1
День добрый!
Возвращаюсь к автопркрутке на новостях яндекса.
То ли раньше не заметил, то ли только сейчас код перестал срабатывать при клике на некоторые ссылки.
На скрине красными стрелками показал ссылки на которые если нажать ЛКМ, то срабатывает автопрокрутка вниз.

скрытый текст
2020-09-19_18-15-56.md.jpg

leex
Поправил, проверяйте.

xrun1
Полет прекрасный!
Благодарю :beer:

Некоторые сайты при копировании текста добавляют:
Источник: ссылка_бла_бла_бла. Скопируешь слово, а там ещё прицеп.
Есть универсальный скрипт, чтобы не копировалась эта ботва?
Сам не знаю как даже это назвать для поиска.

oleg.sgh тема была тут Удалить ссылки на сайт при копировании текста. Там же старый скрипт. Можно посмотреть что и как там делалось и докрутить.

mokujin
Не, это не то и бессмысленно. Отключить скрипты я могу, только на сайте не написано, что там внедрен скрипт с "источник".

Народ, подскажите как на facebook.com можно порезать URL от лишнего хлама?


https://www.facebook.com/mark.solonin.7/posts/3894718980544430?__cft__[0]=AZUkbLF9aucofTpQkQSFMZ7WsrEkrHW6DBgBQ7wLZelKmU_bD1v-WmV32EuYUj-yQH87Up8ShND2GzLCJiHj6RhuEBcTr6MnjrZHRNuh9455a6KTkrqIcxwg28DBc0V5XoYW3xqfz0zRIoDlww5kOXO8&__tn__=%2CO%2CP-R


Дело в том, что я сделал в Stylus подкрашивание заголовка в «уже прочитанно» (к примеру 11 сентября в 00:30), но при обновлении страницы URL меняется, но не основная его часть.

Получить без "?" строку URL можно, это

Выделить код

Код:

location.protocol + '//' + location.host + location.pathname

.
Но вот что дальше делать с полученной строкой - не могу понять.
Кстати, вот список свойств объекта, для большей гибкости:

скрытый текст
•    location.protocol. Определяет протокол или метод.
•    location.hostname. Определяет имя узла.
•    location.port. Определяет порт соединения.
•    location.host. Комбинация двух предыдущих свойств.
•    location.pathname. Каталог расположения документа на узле и имя файла.
•    location.hash. Название анкера в документе, если такой определен (всё, что после #).
•    location.target. Атрибут target ссылки, которая привела к открытию текущего документа.
•    location.query. Определяет строку запроса.
•    location.href. Определяет полный URL.
•     location.search. Параметры строки (всё, что после знака «?»).

oleg.sgh пишет

Не, это не то и бессмысленно. Отключить скрипты я могу, только на сайте не написано, что там внедрен скрипт с "источник".

Конечно ненаписано. Этот скриптег-гад, может вообще быть в теле страницы прописан в тэгах <script>......мудокод_с_добавлением_своего_мусора_при_копировании.....</script> и никак ты его не "зарэжэшЪ" ...
кроме как таким же мудацким способом, сделав скрипт в GM который будет парсить страницу и отменять выполнение скрипта по ключевым словам. Типа того(яхз как он будет в теперешнем FF работать и есть ли там это событие 'beforescriptexecute'):

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name                   disable Inline scripts on pages (может делать гадости, ломать, крушить страницы)
// @namespace            none
// @grant                     none
// @include                  http*
// @run-at                  document-start
// ==/UserScript==

window.addEventListener('beforescriptexecute', breakBadScripts, false);

 function breakBadScripts(e) {
     let  script = e.target, flag;

     let arrAdWords = [
            "AdBlockDetected",
            "AdDelivery.prototype",
            "adspayformy.site",
            "trafficjunky.net",
            "webkitSpeechRecognition",
            "ExoDetector.domain_base",
            "ExoLoader.addZone",
            "requestTrafficJunkyAds",
            "window.zone_",
            "abbp1.pw",
            "ads.exosrv.com",
            "adfox_ad_pixel",
            "adfox_shtorka_",
            "yandexContextAsyncCallbacks",
            "Ya.Context.AdvManager.render",
            "window.NREUM||(NREUM={})).loader_config=",
            "GoogleAnalyticsObject"
            ];

 arrAdWords.forEach( function(adword) {
        flag = script.text.indexOf(adword) +1;
   if(flag) {
        e.preventDefault();
        e.stopPropagation();
        //e.stopImmediatePropagation();
        console.log("Заблокировал скрипт по слову: \"" + adword + "\" \:\n" + script.text.slice(0,220));
        // let div = document.getElementById('caa0'); div.style.display='none';
        }

  });

  };

leshiy_odessa
Попробуй.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name                            fb-Remove
// @namespace                   none
// @include                         http*facebook.com/*
// @version                         2.0.0.2
// @grant                            none
// @run-at                          document-start
// ==/UserScript==

window.addEventListener("DOMContentLoaded",utmRemove, false);
// нижеследующий ↓ Слушатель убери\закоментируй, если работает и так. Этот нижний, еще и по двойному клику исполнение скрипта добавляет.
window.addEventListener("dblclick", utmRemove, false);

function utmRemove() {
     const regex = new RegExp(/(http.*facebook.com.*)\?__cft__.*/gi);
          let arrLinks = Array.from(document.links),
                    locS = regex.test(location.search);

    if( locS && history.replaceState ) { history.replaceState( null,'', location.href.replace(regex, '$1') ) };
//             console.log("Кол-во ссылок : " + arrLinks.length);
// убрать из ссылок страницы
       if (arrLinks.length > 1) {
     arrLinks.forEach( function(lnk) {
        if( lnk.href.match(regex) ) {
             let newHref = lnk.href.replace(regex, '$1'), oRel = lnk.getAttribute('rel');
                   oRel = oRel ? ( oRel + ' ' ) : '';
                 lnk.setAttribute('rel', oRel + 'redirect');
                 lnk.setAttribute('replacedurl', lnk.href);
                 lnk.title = ( lnk.title ? ( lnk.title + ' - ' ) : '' ) + 'Old URL: \n' + decodeURIComponent(lnk.href);
                 lnk.href = newHref;
                 }
         })
  };

};

mokujin пишет

Попробуй.

Сам URL имеет первозданный вид, а вот в открытой вкладке уже обрезанный.

Смысл в том, чтобы Firefox открывал уже обрезанный URL, а иначе он не зафиксируем «уже открытый» URL.

YbcJry2.png

leshiy_odessa пишет

Смысл в том, чтобы Firefox открывал уже обрезанный URL, а иначе он не зафиксируем «уже открытый» URL.

хах, так не выйдет, ЕЯПП. Это тебе нужно расширение аналог PureURL чтоб перехватывались и изменялись запросы.

Это только у меня переодически слетают все скрипты в Tampermonkey? Как их быстро восстановить из резервного профиля. А ещё лучше если кто-нибудь подскажет, как предотвратить слетание.
ЗЫ Не нашёл более подходящую тему, если есть более уместная, то перенесу, если кто направит.

voqabuhe
У меня не слетают. Чем чистишь профиль? У меня свой батник + SpeedyFox.
С 79-й заметил такую вещь. Проверяй у себя.

Можно ли с помощью Greasemonkey перенести кнопку YouTube?

скрытый текст
kYldSAw.jpg

Умельцы, нужен автоматический развертыватель комментариев.
Непонятно, либо спецы на сайте руками из...кривыми, либо это счетчик кликов, либо акцент на рекламе. Суть: комментарии свёрнуты по умолчанию везде. Добавлена строчка в конце поста "Развернуть комментарии", которая работает до перезагрузки страницы. Надо чтобы они сами разворачивались во всех темах.
Без блокировщика рекламы - не входить :P

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

oleg.sgh пишет

Умельцы, нужен автоматический развертыватель комментариев.
Непонятно, либо спецы на сайте руками из...кривыми, либо это счетчик кликов, либо акцент на рекламе. Суть: комментарии свёрнуты по умолчанию везде. Добавлена строчка в конце поста "Развернуть комментарии", которая работает до перезагрузки страницы. Надо чтобы они сами разворачивались во всех темах.
Без блокировщика рекламы - не входить :P

Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Если есть Stylus/Stylish, то можно просто создать стиль для сайта. Комментарии будут развёрнутыми

Выделить код

Код:

div#userAcBlock { display: block !important; }

zzzephire
Подойдёт. Благодарю.

oleg.sgh пишет

Умельцы, нужен автоматический развертыватель комментариев.

У меня на Tampermonkey такое :

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        LJ open spoiler
// @namespace   spoilers
// @icon          http://www.livejournal.com/favicon.ico
// @icon64      http://www.livejournal.com/favicon.ico
// @include     http://*.livejournal.com/*
// @include     https://*.livejournal.com/*
// @run-at      document-idle
// @grant       none
// ==/UserScript==

/*

https://forum.mozilla-russia.org/viewtopic.php?pid=731242#p731242

*/

/* --- НАЖИМАЕМ КНОПКУ "Развернуть" --- */
var spoilers = document.getElementsByClassName('ljcut-link-expand');
for (var i = 0; i < spoilers.length; i++) spoilers[i].click();

/* --- УБРАЛ КНОПКУ "Свернуть" --- */
function HideClass() {
var i, elems = document.getElementsByClassName("ljcut-expanded");
for (i = elems.length-1; i >= 0; i--) elems[i].style.display = "none";
setTimeout(HideClass, 1000);
}
setTimeout(HideClass, 1);
Выделить код

Код:

/*
https://forum.mozilla-russia.org/viewtopic.php?pid=733851#p733851
*/
// ==UserScript==
// @name        Dyrty (d3.ru) open spoiler comments
// @namespace   comments
// @icon            https://d3.ru/static/i/logo_retina_alpha.png
// @icon64          https://d3.ru/static/i/logo_retina_alpha.png
// @include     https://*.d3.ru/*
// @include     http://*.d3.ru/*
// @version     1
// @run-at      document-idle
// @grant       none
// ==/UserScript==
function ClickComment() {
  var i, links = document.getElementsByClassName('b-comment__expand-button');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ClickComment, 1000);
}
setTimeout(ClickComment, 1);
Выделить код

Код:

/*
https://forum.mozilla-russia.org/viewtopic.php?pid=733851#p733851
*/
// ==UserScript==
// @name        Youtube comments open spoiler  [New Design]
// @namespace   comments
// @icon           https://www.youtube.com/favicon.ico
// @icon64        https://www.youtube.com/favicon.ico
// @description    Разворачиваем всё комментарии
// @include     https://youtube.com/*
// @include     http://youtube.com/*
// @include     https://www.youtube.com/*
// @include     http://www.youtube.com/*
// @version     1
// @run-at      document-end
// @grant       none
// ==/UserScript==

/* ----- "Читать дальше" ----- */
function ReadMoreComments() {
/* ----- Выбрали кнопку [Читать дальше] и смотрим её класс ----- */
  var i, links = document.getElementsByClassName('more-button style-scope ytd-comment-renderer');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ReadMoreComments, 10000);
}
setTimeout(ReadMoreComments, 1);

/* ----- "Показать ответы"  ----- */
function ExpandComments() {
  var i, links = document.getElementsByClassName('style-scope ytd-comment-replies-renderer');
  for (i = links.length-1; i >= 0; i--) links[i].click();
  setTimeout(ExpandComments, 10000);
}
setTimeout(ExpandComments, 1);

... а у меня такоев в GM (попытался сделать универсальный - вписуешь домен где-что открывать и сё):

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        Spoilers_open
// @namespace   comments
// @include     http*
// @version     1
// @run-at      document-end
// @grant       none
// ==/UserScript==

 setTimeout( ()=> document.addEventListener("scroll", moreSpoilerOpen, false) , 2000 );

function moreSpoilerOpen() {
  let dom = document.domain.replace(/^www./i,'').split('.').reverse(), arrLinks = [];
       dom = dom[1] + "." + dom[0];

    switch(dom) {
         case "xvideos.com": arrLinks = Array.from( document.getElementsByClassName('btn btn-default show-more') ); break;
         case "newsland.com": arrLinks.push(document.getElementById('comment-folding') ); break;
         default: return;
         }

    if( arrLinks.length > 0 ) arrLinks.forEach( (lnk)=> lnk.click() );

    document.removeEventListener("scroll", moreSpoilerOpen, false);

 };

leshiy_odessa, mokujin
Спасибо, буду иметь в виду.

leshiy_odessa
mokujin
Не работают эти скрипты на ЖЖ, к сожалению. :( Я уже и сам писать пытался - никак.

xrun1 пишет

Не работают эти скрипты на ЖЖ, к сожалению.

Приведите пример URL + скрин того что вы хотите развернуть.

leshiy_odessa
Развернуть все комментарии, как по комбинации Ctrl + Alt + NumPad +
А сайт, например такой (это ЖЖ-шный сайт) https://shakko.ru/1598066.html
UPD: в // @include добавлял.

xrun1 пишет

Не работают эти скрипты на ЖЖ, к сожалению. :( Я уже и сам писать пытался - никак.

ну, код будет такой(для моего выше скрипта добавить к остальным) Ну или переделай отдельным, по-примеру leshiy_odessa :

скрытый текст

Выделить код

Код:

..........
          case "shakko.ru": 
                 arrLinks = Array.from( document.querySelectorAll( "A[class='b-pseudo']") );
                  // console.log("кол-во элементов на shakko.ru : " + arrLinks.length);
                 arrLinks.forEach( (el)=> { if ( el.innerHTML == 'Expand' ) el.click() } );
             break; return;
..........


... ниччё лучше не придумал. Дёргаеццо неприятно при открытии.
Т.к. ЖЖ куча внешних видов(тем) то там и разные селекторы у каждого. А спойлер-а, какого-нить универсального селектора, у них тама нету. Везде 'A' (:dumb:) Всеядного, думаю, сделать низзя\сложно. хотя хз.

mokujin
Прикольно дёргается. :) А может ты знаешь, как послать сочетание клавиш после // @run-at      document-end? В ЖЖ, чтобы открыть комментарии, надо нажать Ctrl + Alt + NumPud +
Теоретически такое на java возможно. Было расширение FireGestures, в котором жестом можно было послать сочетание клавиш. Например, F4 FireGestures.sendKeyEvent({ keyCode: "DOM_VK_F4" }); или Alt+N FireGestures.sendKeyEvent({ alt: true, key: "N" });
Не нашёл в инете примеров SendKeyEvent... Можно попробовать распотрошить расширение, оно у меня есть, но для меня там слишком много кода.

Пример из другого скрипта:

скрытый текст

Выделить код

Код:

window.addEventListener('keydown', function(e) {
    if(e.ctrlKey && e.altKey) {
        switch(e.keyCode) {
            // для клавиши '+' keyCodde 107   http://www.w3.org/2002/09/tests/keys.html
           case 107: moreSpoilerOpen(); 
                            break;
         }
     }
  }, false);


... не проверял.

09-12-2020 10:54:08
возможно лучше будет keypress

Выделить код

Код:

window.addEventListener('keypress', function(e) { .......

09-12-2020 11:08:14
зы. ЕЯПП, то оно и будет дёргаццо. Еслиб был норм спойлер, то страница просто сдвигалась бы вниз и все, без дерганий. Как на rutracker-e:

Выделить код

Код:

case "pornolab.net":
   case "rutracker.org":
        arrLinks = Array.from(document.getElementsByClassName('sp-head folded'));  break;

или oszone:

Выделить код

Код:

case "forum.oszone.net":
          arrLinks = Array.from(document.getElementsByClassName('spoiler-head'));   break;

А тут в этихваших ЖЖ, типа того, что коменты пишутся в страницу при клике, их кагбе и нету вначале. И изза этого дергается.
потому, для этого сайта универсальный клик не подходит. Надо брать ссылки и проверять их innerHTML. Потому и доп. отдельный код для него надобно.
хз., не сильно я шарю.

mokujin
Кодов много нашёл. Все похожие и не работают. Буду нажимать клавиатуру на ЖЖ.:(

На некоторых сайтах есть кнопка переключения языка интерфейса на русский язык. Как сделать чтобы при заходе на такой сайт сразу активировать событие этой кнопки? Допустим в случае с https://www.privat24.ua/
Я в скриптах нуб, поэтому хотелось бы увидеть готовый пример, по которому я бы смог понять логику, и дальше уже самостоятельно сделать такие автоматические переключалки для других сайтов.

Raf-9600
Если не сработает, попробуй увеличить таймаут с 2000 до 3000-5000 миллисекунд.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name         Set-RU-Lang
// @namespace    mystuff
// @version      1
// @description  Переключение интерфейса на русский язык
// @author       VasyaPupkin
// @match        https://*.privat24.ua/*
// @grant        none
// ==/UserScript==

setTimeout(()=>{
    let t = document.querySelector('div.languages > a:nth-child(2)');
    if(t) { t.click(); return; }

    let c = document.querySelectorAll('button.sc-iAyFgw.eeJZse');
    if(c[3].title != 'Русский') {
        c[3].click();
        let cc = (document.querySelectorAll('button.sc-jhAzac.YbrrD'));
        let i = cc[0].title == 'Русский' ? 0 : 1;
        cc[i].click();
    }
}, 2000);

Raf-9600 пишет

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

У каждого сайта будет своя логика. Под каждый нужен будет индивидуальный подход.

на www.privat24.ua можно упростить

Выделить код

Код:

document.addEventListener('load', () => {
	localStorage.lang = 'ru';
	location.reload();
})

Можно ещё проще и без перезагрузки страницы:

Выделить код

Код:

// ==UserScript==
// @name privat24.ua rus
// @match *://*.privat24.ua/*
// @run-at document-start
// ==/UserScript==

localStorage.lang = 'ru';

Но в подобном скрипте смысл есть только в том случае, если куки сайта удаляются.

Бумбик
sn260591
Ваши варианты не работают с этим сайтом.
.

zzzephire пишет

У каждого сайта будет своя логика

Да, я догадывался. Мне бы просто в общих чертах логику понять.
Сам я из программирования знаю лишь поверхностно C#. Английский не знаю.
.
Кстати, ваш код работает безупречно.
Буду с помощью Гугла выяснять что каждая строчка делает.
.
Благодарю что откликнулись.

Raf-9600 пишет

Ваши варианты не работают с этим сайтом.

Видимо особенности Greasemonkey, нет доступа к локальному хранилищу.

Тут не надо выяснять что делает каждая строчка, нужно на базовом уровне знать javascript и работу с DOM, тогда это будет просто

Бумбик пишет

нужно на базовом уровне знать javascript и работу с DOM

А вы как это освоили? Книги? Гугл? Видео уроки?

Бумбик пишет

Видимо особенности Greasemonkey, нет доступа к локальному хранилищу.

Я тестировал в Tampermonkey, он вроде как позиционируется более функциональным.

Raf-9600 пишет

А вы как это освоили? Книги? Гугл? Видео уроки?

Все вместе, для базового уровня времени и знаний много не надо

Raf-9600 пишет

Я тестировал в Tampermonkey, он вроде как позиционируется более функциональным.

Тут скорей разницы нет какое дополнение, сама лиса ограничивает им доступ к localstorage в целях безопасности

Бумбик пишет
Raf-9600 пишет

Ваши варианты не работают с этим сайтом.

Видимо особенности Greasemonkey, нет доступа к локальному хранилищу.

Там хитро сделан код сайта. Скрипт отработает, но если делать что необходимо после определенного таймаута. В данном случае бесполезны директивы @run-at. Использовал tampermonkey

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name         Set-RU-Lang
// @namespace    mystuff
// @version      1
// @description  Переключение интерфейса на русский язык
// @author       VasyaPupkin
// @match        https://*.privat24.ua/*
// @grant        none
// ==/UserScript==
if(localStorage.lang == 'ru') return;
setTimeout(()=>{
    localStorage.lang = 'ru';
    location.reload();
}, 2000);

zzzephire
Странно. У меня не работает ни в tampermonkey, ни в Greasemonkey. У меня работает этот вариант:

Выделить код

Код:

setTimeout(()=>{
    let t = document.querySelector('div.languages > a:nth-child(2)');
    if(t) { t.click(); return; }

    localStorage.lang = 'ru';
}, 0);

Raf-9600
Tampermonkey, [firefox] 85.0.1 Срабатывает №1076, даже без удаления печенек.

...

Приветствую всех!
Возможно ли в Greasemonkey изменить код страницы так, чтобы при сохранение HTML-кода/просмотре HTML-кода (Ctrl+U) код был правленным?
Задача: в каждую страницу добавить исходный URL-страницы в виде комментария или META-тега (например: <meta name="URL", content"https://kakoito-sait.ru"/>).
Сделал META-тегом, но он виден только в сгенерированном коде, а при сохранении страницы на диск в виде HTML-страницы META-тег отсутствует.

Ciber SLasH нужно делать настоящее расширение браузера (webextension) и в webrequest api менять содержимое страницы.

webRequest-ом тоже не получилось модифицировать код страницы так, чтобы HTML-код при сохранении страницы был изменён.
Да и заголовки через HTTPS нельзя модифицировать: https://bugzilla.mozilla.org/show_bug.cgi?id=1475832
Похоже ничем это не сделать...

Ciber SLasH  В CB это делалось так:

скрытый текст

Выделить код

Код:

// Добавить адрес наверху страницы и открыть диалог сохранения страницы .............
function savePage() {
   var sURL = gURLBar.value;
   content.document.body.innerHTML = "<table width=100%><tr><td align=left><small><a target=_blank href=" + 
                                        sURL + ">"+ sURL + "</a></small>\n</td></tr></table>" + content.document.body.innerHTML;
   saveDocument(window.content.document);
};


№52
... ну и эта №31

С кнопки CB тоже не попадает с сохраняемую страницу изменения.

https://forum.mozilla-russia.org/viewto … 79#p784579

xrun1 пишет

leex, sandro79

Вот я влез не в свою тему!  Я ведь не java-программист. Просто бывший программист с большим опытом. Где-то здесь уже писал, что свой скрипт на java написать не смогу, но искорёжить чужой - запросто!  Попробуйте, должен срабатывать только на ссылках "В источнике" или в блоке "Подробнее о событии".

скрытый текст
// ==UserScript==
// @name         Stop scrolling on Yandex
// @author       CoolCmd
// @namespace    https://forum.mozilla-russia.org/viewtopic.php?pid=762360#p762360 , https://forum.mozilla-russia.org/viewtopic.php?pid=784579#p784579
// @description  Не прокручивать страницу в Яндекс.Новости при клике на ссылку "В источнике" или на ссылках в блоке "Подробнее о событии"
// @icon         data:image/x-icon;base64,AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADR0dG30tLSudHR0bzQ0NC+z8/Pwc/Pz8PIyMjHysrKycfHx8zExMTPw8PD0cDAwNTAwMDWvb292by8vNy6urreuLi44ba2tuO2trblsrKy6LKysuqwsLDtra2t8KysrPOsrKz0qqqq+KmpqfqoqKj8AAAAAwAAAAAAAAAAAAAAANLS0rXQ0NC40tLSutDQ0L3Ozs6/zc3NwsrKysXJycnHx8fHysLCws7CwsLQwcHB0sDAwNW9vb3Yurq627m5ud22trbgtra24rS0tOWysrLnsLCw6bCwsOuurq7urKys8aqqqvOqqqr1qamp+KampvoAAAAQAAAAAAAAAAAAAAAA0tLStNHR0bfR0dG40dHRu83Nzb7Nzc3AysrKxMbGxsbExMTKw8PDzMHBwc69vb3Svr6+1Ly8vNa7u7vZuLi427e3t960tLThs7Oz47KysuWwsLDorq6u6qysrO2rq6vuqqqq8qioqPSoqKj2p6en+QAAAB0AAAAAAAAAAAAAAADR0dGy0tLStNHR0bfQ0NC6zs7Ou8rKyr/JycnCx8fHxcTExMjCwsLKwMDAzr6+vtC7u7vTu7u71bq6ute4uLjatra23bS0tN6ysrLhsrKy5K+vr+atra3pra2t66urq+6pqanwqamp86enp/WlpaX3AAAAKwAAAAAAAAAAAAAAANLS0rHR0dGz09PTtc3NzbgzM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///ubm51re3t9lUVFTtU1NT7lNTU+9TU1Pwr6+v5a2treesrKzpq6ur7KioqO6np6fxp6en86SkpPYAAAAyAAAABwAAAAAAAAAA0tLSr9HR0bLS0tK0zs7OtjMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//+4uLjVtbW12AAAAP8AAAD/AAAA/wAAAP+tra3krKys56urq+ipqanrqKio7aampu+lpaXxo6Oj9QAAADMAAAAWAAAAAAAAAADS0tKu0tLSr9HR0bLPz8+1MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//7i4uNO1tbXWtLS02bGxsduwsLDer6+v4K6uruKrq6vlqqqq56ioqOqmpqbrpaWl7qSkpPGjo6PzAAAANAAAACUAAAAAAAAAANPT06zT09Ou0dHRsc/Pz7MzM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///tra20rW1tdVRUVHrUVFR7FFRUe1QUFDuUVFR71FRUfBQUFDyUFBQ86ampuqlpaXto6Oj76GhofIAAAA0AAAAMwAAAAEAAAAA0tLSqtPT06zS0tKv0dHRsTMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//+zs7PRsrKy1AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/pqam6aOjo+yioqLtoqKi8AAAADUAAAA3AAAADQAAAADT09Oo1NTUq9PT063R0dGwMzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//7S0tNCzs7PTsrKy1LCwsNeurq7ZrKys3Kqqqt+oqKjhp6en46ampuakpKToo6Oj6qKiouygoKDvAAAANgAAADgAAAAdAAAAANLS0qbV1dWp0dHRrNPT064zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///s7OzzrCwsNJQUFDpUFBQ6k9PT+tPT0/sUFBQ7U5OTu9OTk7wTk5O8aOjo+ejo6PpoaGh65+fn+0AAAA3AAAAOQAAAC4AAAAA1NTUpdPT06jS0tKq1NTUrDMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//+xsbHOsbGx0QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/o6Oj5aKiouegoKDqn5+f7AAAADcAAAA5AAAAPAAAAATT09Ok1NTUptPT06nS0tKrMzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//7KyssywsLDPrq6u0a6urtOsrKzWqqqq2KmpqdumpqbdpKSk4KKiouKioqLkn5+f556enuidnZ3rAAAAOAAAADoAAAA8AAAAFNPT06LU1NSl09PTp9PT06kzM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///sbGxy6+vr81NTU3nTk5O6E5OTulNTU3rTU1N7ExMTO1MTEzuTExM76KiouOgoKDmnp6e6J6enuoAAAA5AAAAOwAAAD0AAAAm1NTUoNXV1aPU1NSl09PTqDMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//+vr6/Kr6+vzAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/oKCg4p+fn+SdnZ3mnJyc6AAAADoAAAA8AAAAPgAAADjU1NSf1NTUodPT06TS0tKm0tLSqdLS0qvS0tKu0tLSsdHR0bLS0tK10NDQuNDQ0LrR0dG80NDQv8/Pz8HPz8/Ez8/PxtDQ0MnPz8/Lz8/Pzs7OztDOzs7Sz8/P1c7OztfOzs7azc3N3M7Ozt/Ozs7hAAAAAAAAAAAAAAAAAAAAANXV1Z3S0tKg1dXVotLS0qXT09On0tLSqtHR0azS0tKv0tLSsdLS0rTS0tK10dHRuNLS0rrQ0NC90dHRwNDQ0MLPz8/F0NDQx9DQ0MnOzs7Mz8/Pzs/Pz9HPz8/Tz8/P1c/Pz9jOzs7bzc3N3c3NzeAAAAAAAAAAAAAAAAAAAAAA09PTnNXV1Z7U1NSh1dXVowAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/z8/P1s7OztnPz8/bzs7O3gAAAAAAAAAAAAAAAAAAAADW1taa1dXVndTU1J/U1NShAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Ozs7Vzs7O187OztrNzc3cAAAAAAAAAAAAAAAAAAAAANXV1ZjU1NSb1dXVndTU1KAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/9DQ0NPOzs7Wz8/P2M7OztsAAAAAAAAAAAAAAAAAAAAA1tbWl9TU1JrV1dWc1dXVntTU1KHT09Oj0tLSptPT06jR0dGr09PTrdLS0q/R0dGy0tLStNHR0bfS0tK50dHRvNHR0b7Pz8/B0dHRw87OzsbQ0NDI0NDQytDQ0MzQ0NDPz8/P0c/Pz9TOzs7Xzs7O2QAAAAAAAAAAAAAAAAAAAADW1taV1dXVmNTU1JrT09Od1dXVntTU1KHT09Ok09PTp9PT06nU1NSr0tLSrtLS0rHR0dGy0tLStdDQ0LjQ0NC60dHRvNDQ0L/Q0NDCz8/PxM/Pz8bQ0NDJz8/Py9DQ0M7Pz8/Qzs7O0s/Pz9XPz8/YAAAAAAAAAAAAAAAAAAAAANbW1pTW1taW1dXVmNbW1pvT09Oe0tLSoNXV1aLS0tKl09PTp9LS0qrT09Os0tLSr9LS0rHS0tK00dHRttHR0bjS0tK70NDQvdHR0cDQ0NDD0NDQxdDQ0MfQ0NDJzs7OzM/Pz87Pz8/Rzs7O1M7OztYAAAAAAAAAAAAAAAAAAAAA19fXktbW1pXV1dWX1NTUmtPT05zV1dWe1NTUodXV1aPS0tKm09PTqNLS0qvT09Ot09PTr9HR0bLS0tK00dHRt9DQ0LrR0dG80NDQvs/Pz8HQ0NDDz8/PxtDQ0MjR0dHLzs7OzdDQ0M/Nzc3Sz8/P1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////8AAAAHAAAABwAAAAcAAAAHAAAAAwAAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA//////////////////////KAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0tLSt9HR0bzNzc3CyMjIx8XFxc3CwsLRvb2917m5ud22trbhs7Oz5rCwsOusrKzwqamp9aampvoAAAAFAAAAANDQ0LTS0tK5y8vLv8jIyMTCwsLKv7+/z7y8vNW4uLjat7e33rGxseOurq7oq6ur7qmpqfKmpqb2AAAAFAAAAADS0tKxz8/PtjMz//8zM///MzP//zMz//8zM///uLi41wAAAP8AAAD/rKys5qmpqeqmpqbvo6Oj9AAAACUAAAAA0tLSrtDQ0LMzM///MzP//zMz//8zM///MzP//7W1tdWxsbHar6+v3qysrOOoqKjnpaWl7KOjo/EAAAA0AAAAAtHR0avQ0NCvMzP//zMz//8zM///MzP//zMz//+zs7PSAAAA/wAAAP8AAAD/AAAA/6Ojo+mfn5/vAAAAOAAAABDT09Oo09PTrDMz//8zM///MzP//zMz//8zM///srKy0K2trdSrq6vaqKio3qWlpeOioqLnoKCg6wAAADkAAAAj09PTpNPT06kzM///MzP//zMz//8zM///MzP//7CwsMwAAAD/AAAA/wAAAP8AAAD/oKCg5Z2dnekAAAA6AAAANtTU1KHS0tKm0tLSq9LS0rDS0tK00NDQutHR0b7Q0NDD0NDQyNDQ0M3Ozs7S0NDQ183NzdzOzs7gAAAAAAAAAADT09Oe09PTowAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Pz8/Yz8/P3QAAAAAAAAAA1NTUmtLS0qAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/zs7O1c7OztoAAAAAAAAAANbW1pfV1dWc1NTUodLS0qbU1NSr0tLSr9LS0rTQ0NC60dHRvtHR0cPQ0NDJ0NDQzc7OztLOzs7XAAAAAAAAAADX19eU1dXVmdPT057V1dWj09PTqNPT063R0dGy0dHRt9HR0bvR0dHA0NDQxdDQ0MrPz8/Pzs7O1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAP//AAD//wAA
// @version      1
// @match        https://yandex.ru/news/*
// @match        https://yandex.ru/sport/*
// @grant        none
// @run-at       document-start
// ==/UserScript==
'use strict';
window.addEventListener(
  'click',
  e =>
  {
      let in_source = e.target.closest('a[href].mg-story__meta'); // ссылка "В источнике"
      let published_in = e.target.closest('a[href].mg-story__doc-reference'); // ссылка в блоке "С чего всё началось" типа "опубликовал в Instagram"
      let from_agency = e.target.closest('a[href].mg-snippet__agency'); // ссылка в блоке "С чего всё началось" типа источник
      let more_about_events = e.target.closest('a[href].mg-snippet__url'); // ссылки "Подробнее о событии"
      let in_source_sport = e.target.closest('a[href].news-story__meta.link'); // ссылка "В источнике" для /sport/
      let about_events_show_more = e.target.closest('a[href].news-card-snippet__info-link'); // ссылки "Подробнее о событии" для /sport/
      if (in_source || published_in || from_agency || more_about_events || in_source_sport || about_events_show_more)
    {
      e.stopImmediatePropagation();
      e.stopPropagation();
    }
  },
  true
);


Иконку к скрипту для Яндекс.Новости прицепить не смог, она у них в base64. Может потом найду способ, пока иконка Яндекса.kabanoПроверить не могу, только предположение. На сайте могли ввести новые правила и символ "$" - знак доллара теперь надо экранировать. Попробуйте перед этим символом везде вставить обратный слэш "\" (без кавычек, разумеется).

P.S.

И, кстати, это не глюк Яндекса, а вполне сознательная политика. При клике на ссылку экран прокручивается на видимую высоту.
Вот код их функции

Выделить код

Код:

function(e) {
  if (!(/mac os/i.test(navigator.userAgent) ? e.metaKey : e.ctrlKey)) {
    var t = R.current.clientHeight + R.current.offsetTop + ze.d;
    t && window.scrollTo(0, t), Object(He.a)(Ze.c.RESET_OFFSET)
  }
}

                    Отредактировано xrun1 (12-10-2020 02:12:14)


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

Могу ли попросить поправить наш код?

leex
Привет. У меня работает такой код

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name         Stop scrolling on Yandex
// @author       CoolCmd
// @namespace    https://forum.mozilla-russia.org/viewtopic.php?pid=762360#p762360 , https://forum.mozilla-russia.org/viewtopic.php?pid=784579#p784579
// @description  Не прокручивать страницу в Яндекс.Новости при клике на ссылку "В источнике" или на ссылках в блоке "Подробнее о событии"
// @icon         data:image/x-icon;base64,AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADR0dG30tLSudHR0bzQ0NC+z8/Pwc/Pz8PIyMjHysrKycfHx8zExMTPw8PD0cDAwNTAwMDWvb292by8vNy6urreuLi44ba2tuO2trblsrKy6LKysuqwsLDtra2t8KysrPOsrKz0qqqq+KmpqfqoqKj8AAAAAwAAAAAAAAAAAAAAANLS0rXQ0NC40tLSutDQ0L3Ozs6/zc3NwsrKysXJycnHx8fHysLCws7CwsLQwcHB0sDAwNW9vb3Yurq627m5ud22trbgtra24rS0tOWysrLnsLCw6bCwsOuurq7urKys8aqqqvOqqqr1qamp+KampvoAAAAQAAAAAAAAAAAAAAAA0tLStNHR0bfR0dG40dHRu83Nzb7Nzc3AysrKxMbGxsbExMTKw8PDzMHBwc69vb3Svr6+1Ly8vNa7u7vZuLi427e3t960tLThs7Oz47KysuWwsLDorq6u6qysrO2rq6vuqqqq8qioqPSoqKj2p6en+QAAAB0AAAAAAAAAAAAAAADR0dGy0tLStNHR0bfQ0NC6zs7Ou8rKyr/JycnCx8fHxcTExMjCwsLKwMDAzr6+vtC7u7vTu7u71bq6ute4uLjatra23bS0tN6ysrLhsrKy5K+vr+atra3pra2t66urq+6pqanwqamp86enp/WlpaX3AAAAKwAAAAAAAAAAAAAAANLS0rHR0dGz09PTtc3NzbgzM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///ubm51re3t9lUVFTtU1NT7lNTU+9TU1Pwr6+v5a2treesrKzpq6ur7KioqO6np6fxp6en86SkpPYAAAAyAAAABwAAAAAAAAAA0tLSr9HR0bLS0tK0zs7OtjMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//+4uLjVtbW12AAAAP8AAAD/AAAA/wAAAP+tra3krKys56urq+ipqanrqKio7aampu+lpaXxo6Oj9QAAADMAAAAWAAAAAAAAAADS0tKu0tLSr9HR0bLPz8+1MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//7i4uNO1tbXWtLS02bGxsduwsLDer6+v4K6uruKrq6vlqqqq56ioqOqmpqbrpaWl7qSkpPGjo6PzAAAANAAAACUAAAAAAAAAANPT06zT09Ou0dHRsc/Pz7MzM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///tra20rW1tdVRUVHrUVFR7FFRUe1QUFDuUVFR71FRUfBQUFDyUFBQ86ampuqlpaXto6Oj76GhofIAAAA0AAAAMwAAAAEAAAAA0tLSqtPT06zS0tKv0dHRsTMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//+zs7PRsrKy1AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/pqam6aOjo+yioqLtoqKi8AAAADUAAAA3AAAADQAAAADT09Oo1NTUq9PT063R0dGwMzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//7S0tNCzs7PTsrKy1LCwsNeurq7ZrKys3Kqqqt+oqKjhp6en46ampuakpKToo6Oj6qKiouygoKDvAAAANgAAADgAAAAdAAAAANLS0qbV1dWp0dHRrNPT064zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///s7OzzrCwsNJQUFDpUFBQ6k9PT+tPT0/sUFBQ7U5OTu9OTk7wTk5O8aOjo+ejo6PpoaGh65+fn+0AAAA3AAAAOQAAAC4AAAAA1NTUpdPT06jS0tKq1NTUrDMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//+xsbHOsbGx0QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/o6Oj5aKiouegoKDqn5+f7AAAADcAAAA5AAAAPAAAAATT09Ok1NTUptPT06nS0tKrMzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//7KyssywsLDPrq6u0a6urtOsrKzWqqqq2KmpqdumpqbdpKSk4KKiouKioqLkn5+f556enuidnZ3rAAAAOAAAADoAAAA8AAAAFNPT06LU1NSl09PTp9PT06kzM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///sbGxy6+vr81NTU3nTk5O6E5OTulNTU3rTU1N7ExMTO1MTEzuTExM76KiouOgoKDmnp6e6J6enuoAAAA5AAAAOwAAAD0AAAAm1NTUoNXV1aPU1NSl09PTqDMz//8zM///MzP//zMz//8zM///MzP//zMz//8zM///MzP//zMz//+vr6/Kr6+vzAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/oKCg4p+fn+SdnZ3mnJyc6AAAADoAAAA8AAAAPgAAADjU1NSf1NTUodPT06TS0tKm0tLSqdLS0qvS0tKu0tLSsdHR0bLS0tK10NDQuNDQ0LrR0dG80NDQv8/Pz8HPz8/Ez8/PxtDQ0MnPz8/Lz8/Pzs7OztDOzs7Sz8/P1c7OztfOzs7azc3N3M7Ozt/Ozs7hAAAAAAAAAAAAAAAAAAAAANXV1Z3S0tKg1dXVotLS0qXT09On0tLSqtHR0azS0tKv0tLSsdLS0rTS0tK10dHRuNLS0rrQ0NC90dHRwNDQ0MLPz8/F0NDQx9DQ0MnOzs7Mz8/Pzs/Pz9HPz8/Tz8/P1c/Pz9jOzs7bzc3N3c3NzeAAAAAAAAAAAAAAAAAAAAAA09PTnNXV1Z7U1NSh1dXVowAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/z8/P1s7OztnPz8/bzs7O3gAAAAAAAAAAAAAAAAAAAADW1taa1dXVndTU1J/U1NShAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Ozs7Vzs7O187OztrNzc3cAAAAAAAAAAAAAAAAAAAAANXV1ZjU1NSb1dXVndTU1KAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/9DQ0NPOzs7Wz8/P2M7OztsAAAAAAAAAAAAAAAAAAAAA1tbWl9TU1JrV1dWc1dXVntTU1KHT09Oj0tLSptPT06jR0dGr09PTrdLS0q/R0dGy0tLStNHR0bfS0tK50dHRvNHR0b7Pz8/B0dHRw87OzsbQ0NDI0NDQytDQ0MzQ0NDPz8/P0c/Pz9TOzs7Xzs7O2QAAAAAAAAAAAAAAAAAAAADW1taV1dXVmNTU1JrT09Od1dXVntTU1KHT09Ok09PTp9PT06nU1NSr0tLSrtLS0rHR0dGy0tLStdDQ0LjQ0NC60dHRvNDQ0L/Q0NDCz8/PxM/Pz8bQ0NDJz8/Py9DQ0M7Pz8/Qzs7O0s/Pz9XPz8/YAAAAAAAAAAAAAAAAAAAAANbW1pTW1taW1dXVmNbW1pvT09Oe0tLSoNXV1aLS0tKl09PTp9LS0qrT09Os0tLSr9LS0rHS0tK00dHRttHR0bjS0tK70NDQvdHR0cDQ0NDD0NDQxdDQ0MfQ0NDJzs7OzM/Pz87Pz8/Rzs7O1M7OztYAAAAAAAAAAAAAAAAAAAAA19fXktbW1pXV1dWX1NTUmtPT05zV1dWe1NTUodXV1aPS0tKm09PTqNLS0qvT09Ot09PTr9HR0bLS0tK00dHRt9DQ0LrR0dG80NDQvs/Pz8HQ0NDDz8/PxtDQ0MjR0dHLzs7OzdDQ0M/Nzc3Sz8/P1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////8AAAAHAAAABwAAAAcAAAAHAAAAAwAAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA//////////////////////KAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0tLSt9HR0bzNzc3CyMjIx8XFxc3CwsLRvb2917m5ud22trbhs7Oz5rCwsOusrKzwqamp9aampvoAAAAFAAAAANDQ0LTS0tK5y8vLv8jIyMTCwsLKv7+/z7y8vNW4uLjat7e33rGxseOurq7oq6ur7qmpqfKmpqb2AAAAFAAAAADS0tKxz8/PtjMz//8zM///MzP//zMz//8zM///uLi41wAAAP8AAAD/rKys5qmpqeqmpqbvo6Oj9AAAACUAAAAA0tLSrtDQ0LMzM///MzP//zMz//8zM///MzP//7W1tdWxsbHar6+v3qysrOOoqKjnpaWl7KOjo/EAAAA0AAAAAtHR0avQ0NCvMzP//zMz//8zM///MzP//zMz//+zs7PSAAAA/wAAAP8AAAD/AAAA/6Ojo+mfn5/vAAAAOAAAABDT09Oo09PTrDMz//8zM///MzP//zMz//8zM///srKy0K2trdSrq6vaqKio3qWlpeOioqLnoKCg6wAAADkAAAAj09PTpNPT06kzM///MzP//zMz//8zM///MzP//7CwsMwAAAD/AAAA/wAAAP8AAAD/oKCg5Z2dnekAAAA6AAAANtTU1KHS0tKm0tLSq9LS0rDS0tK00NDQutHR0b7Q0NDD0NDQyNDQ0M3Ozs7S0NDQ183NzdzOzs7gAAAAAAAAAADT09Oe09PTowAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/Pz8/Yz8/P3QAAAAAAAAAA1NTUmtLS0qAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/zs7O1c7OztoAAAAAAAAAANbW1pfV1dWc1NTUodLS0qbU1NSr0tLSr9LS0rTQ0NC60dHRvtHR0cPQ0NDJ0NDQzc7OztLOzs7XAAAAAAAAAADX19eU1dXVmdPT057V1dWj09PTqNPT063R0dGy0dHRt9HR0bvR0dHA0NDQxdDQ0MrPz8/Pzs7O1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAP//AAD//wAA
// @version      1
// @match        https://yandex.ru/news/*
// @match        https://yandex.ru/sport/*
// @grant        none
// @run-at       document-start
// ==/UserScript==
'use strict';
window.addEventListener(
  'click',
  e =>
  {
      let in_source = e.target.closest('a[href].mg-story__meta'); // ссылка "В источнике"
      let published_in = e.target.closest('a[href].mg-story__doc-reference'); // ссылка в блоке "С чего всё началось" типа "опубликовал в Instagram"
      let from_agency = e.target.closest('a[href].mg-snippet__agency-info'); // ссылка в блоке "С чего всё началось" типа источник
      let more_about_events = e.target.closest('a[href].mg-snippet__url'); // ссылки "Подробнее о событии"
      let in_source_sport = e.target.closest('a[href].news-story__meta.link'); // ссылка "В источнике" для /sport/
      let about_events_show_more = e.target.closest('a[href].news-card-snippet__info-link'); // ссылки "Подробнее о событии" для /sport/
      if (in_source || published_in || from_agency || more_about_events || in_source_sport || about_events_show_more)
    {
      e.stopImmediatePropagation();
      e.stopPropagation();
    }
  },
  true
);


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

xrun1
День добрый!
Ваш код из последнего поста, тоже не работает на яндекс новостях.
Как обычно у них: при клике ЛКМ на ссылку любого источника — открывается новая страница в источнике, которая становится активной,
а исходная яндекс новостей, прокручивается на видимую высоту.
Например тут: https://yandex.ru/news/story/Minzdrav_u … 385fcc07ce

leex
А Вы уверены, что скрипт включён? У меня так по Вашей ссылке, небольшое видео.
https://disk.yandex.ru/i/uauyj03gbZ0C5Q

leex
Установи uMatrix и не парься.

xrun1
Скрипт включен, но не работает. Тампер v4.13.6136, FF 93.0 - свежак.
https://disk.yandex.ru/i/66i5keexd3xJpg



26-10-2021 17:18:51

voqabuhe пишет

leex
Установи uMatrix и не парься.

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

xrun1 пишет

leex
А Вы уверены, что скрипт включён? У меня так по Вашей ссылке

У меня в разделе "подробнее о событии" скрипт как и у Вас работает.
Перестал работать только в источниках, самого верхнего на странице раздела.
Вот видео: https://disk.yandex.ru/i/LaIUYZ_qWn2WOA

leex
Теперь понял. У меня этот блок тоже раньше был, а теперь мой стиль для яндекса его блокирует. Что-то там постоянно мудрят с видом страницы.
Надо добавить одну строчку (4-ю) и изменить другую (последнюю) в примере ниже. А можно и целый блок.

скрытый текст

Выделить код

Код:

let in_source = e.target.closest('a[href].mg-story__meta'); // ссылка "В источнике"
      let published_in = e.target.closest('a[href].mg-story__doc-reference'); // ссылка в блоке "С чего всё началось" типа "опубликовал в Instagram"
      let from_agency = e.target.closest('a[href].mg-snippet__agency-info'); // ссылка в блоке "С чего всё началось" типа источник
      let from_group_source = e.target.closest('a[href].mg-snippets-group__source'); // 27.10.2021 источник из группы новостей
      let more_about_events = e.target.closest('a[href].mg-snippet__url'); // ссылки "Подробнее о событии"
      let in_source_sport = e.target.closest('a[href].news-story__meta.link'); // ссылка "В источнике" для /sport/
      let about_events_show_more = e.target.closest('a[href].news-card-snippet__info-link'); // ссылки "Подробнее о событии" для /sport/
      if (in_source || published_in || from_agency || from_group_source || more_about_events || in_source_sport || about_events_show_more)

xrun1
Сердечно благодарен Вам! :beer:
Скрипт работает.

Приветствую xrun1!
Нашел на новостях еще один проблемный линк и пытаюсь поправить сам.
Вот страница https://yandex.ru/news/story/Gossekreta … 068dbbf56c
Я взял инструмент "исследовать", ткнул на блок и скопировал код из него.
Немного отредактировав по образцу из вашего кода, получил это:

скрытый текст

Выделить код

Код:

let in_source = e.target.closest('a[href].mg-story__meta'); // ссылка "В источнике"
      let published_in = e.target.closest('a[href].mg-story__doc-reference'); // ссылка в блоке "С чего всё началось" типа "опубликовал в Instagram"
      let from_agency = e.target.closest('a[href].mg-snippet__agency-info'); // ссылка в блоке "С чего всё началось" типа источник
      let from_group_source = e.target.closest('a[href].mg-snippets-group__source'); // 27.10.2021 источник из группы новостей
      let more_about_events = e.target.closest('a[href].mg-snippet__url'); // ссылки "Подробнее о событии"
      let in_source_sport = e.target.closest('a[href].news-story__meta.link'); // ссылка "В источнике" для /sport/
      let about_events_show_more = e.target.closest('a[href].news-card-snippet__info-link'); // ссылки "Подробнее о событии" для /sport/
      let subtitle_text = e.target.closest('a[href].news-story__subtitle-text'); // ссылки "текст в подзаголовоке"
      if (in_source || published_in || from_agency || from_group_source || more_about_events || in_source_sport || about_events_show_more || subtitle_text)

добавил строку   

Выделить код

Код:

let subtitle_text = e.target.closest('a[href].news-story__subtitle-text'); // ссылки "текст в подзаголовоке"

и добавил subtitle_text в нижней строке     

Выделить код

Код:

if (in_source || published_in || from_agency || from_group_source || more_about_events || in_source_sport || about_events_show_more || subtitle_text)

Но почему то не срабатывает. Происходит автопрокрутка.

leex
Всё правильно. Только там надо смотреть class, в котором сразу после следует ссылка href. Это чуть выше

скрытый текст
<a class="news-story__subtitle" href="https://ria.ru/20211116/blinken-1759218617.html?utm_source=yxnews&utm_medium=desktop"

Замените у себя news-story__subtitle-text --> news-story__subtitle
Удачи!:)

xrun1
Благодарю за пояснения, что и где искать!
Сделал. Работает :)

скрытый текст

Выделить код

Код:

.
      let in_source = e.target.closest('a[href].mg-story__meta'); // ссылка "В источнике"
      let published_in = e.target.closest('a[href].mg-story__doc-reference'); // ссылка в блоке "С чего всё началось" типа "опубликовал в Instagram"
      let from_agency = e.target.closest('a[href].mg-snippet__agency-info'); // ссылка в блоке "С чего всё началось" типа источник
      let from_group_source = e.target.closest('a[href].mg-snippets-group__source'); // 27.10.2021 источник из группы новостей
      let more_about_events = e.target.closest('a[href].mg-snippet__url'); // ссылки "Подробнее о событии"
      let in_source_sport = e.target.closest('a[href].news-story__meta.link'); // ссылка "В источнике" для /sport/
      let about_events_show_more = e.target.closest('a[href].news-card-snippet__info-link'); // ссылки "Подробнее о событии" для /sport/
      let news_story_subtitle = e.target.closest('a[href].news-story__subtitle'); // ссылка "В подзаголовоке"
      if (in_source || published_in || from_agency || from_group_source || more_about_events || in_source_sport || about_events_show_more || news_story_subtitle)

Ребят, нужен скрипт на блокировку рекламы, на Твиче.
Есть Twitch Ad-Blocker-2, но странно работает, а про все остальные молчу.

ibb1386

скрытый текст
попробуйте RU AdList JS Fixes

leex
Не вариант, увы.

Подскажите, у кого-нибудь есть скрипт для показа полного названия видео в списке youtube ? Раньше было расширение которое показывало полное название видео, но оно умерло в связи с переездом на квантум, новое никто не сделал. Можно это как-то решить ? А то название видео обрезаются и поиском по странице пользоваться неудобно.
9jjn.png

Подскажите, у кого-нибудь есть скрипт для показа полного названия видео в списке youtube ? Раньше было расширение которое показывало полное название видео, но оно умерло в связи с переездом на квантум, новое никто не сделал. Можно это как-то решить ? А то название видео обрезаются и поиском по странице пользоваться неудобно.
https://greasyfork.org/en/scripts/40561 … gine-fixes

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

soll
В скрипте это сделано стилем. Попробуйте такой стиль, проверил в Stylus.

Выделить код

Код:

#video-title{max-height:none!important;-webkit-line-clamp:none!important}

скрытый текст
Youtube
hOemZgf.png
Stylus
LVQ4EN7.png

xrun1, работает, спасибо.

Скажите, у меня стоял скрипт для возвращение фавиконов в поиске гугл, недавно всё отвалилось. Не могли бы вы подсказать нормальный скрипт или что поправить для старого. Очень не хватает
Был этот https://greasyfork.org/en/scripts/7664-faviconizegoogle , но он начал глючить
поставил другой, он работал нормально, но сейчас не работает

Выделить код

Код:

// ==UserScript==
// @name         Фавиконы Google
// @description  Добавляет фавиконы в поиск Google.
// @include      https://www.google.ru/*
// @include      https://www.google.ru/*/*
// @include      https://www.google.com/*
// @include      https://www.google.com/*/*
// @run-at       document-start
// @version      2.7
// @licence      Apache 2.0
// @icon         http://nv.github.com/faviconize-google.js/chrome/icon_48.png
// @grant          GM_addStyle
// @namespace http://userscripts.ru/js/faviconize-google/
// ==/UserScript==


(function(){

    (typeof GM_addStyle != 'undefined' ? GM_addStyle : function addStyle(css) {
        var head = document.getElementsByTagName('head')[0];
        var style = document.createElement("style");
        style.type = "text/css";
        style.appendChild(document.createTextNode(css));
        head.appendChild(style);
    })(".favicon {\
    padding-right: 4px;\
    vertical-align: middle;\
    border: none;\
}\
#res .favicon {\
    left: -20px;\
    position: absolute;\
    top: 2px;\
    z-index: 9;\
}\
div.vsc {\
    position: relative;\
}\
div.vsc img.favicon {\
    position: absolute !important;\
    top: 0;\
    left: -20px !important;\
}\
");

    var FAVICON_GRABBER = 'https://www.google.com/s2/favicons?domain='; // 'http://favicon.yandex.net/favicon/'
    var QUERY = '#ires .g h3 a:not([id]), #res .g a:not([id])';

/**
 * @param {NodeList} links
 */
function add_favicons_to(links) {
    for (var i=0; i<links.length; i++) {
        if (links[i].firstChild.className != 'favicon') {
            var host = links[i].href.replace(/.*https?:\/\//, '').replace(/\/.*$/,'');
            var img = document.createElement('IMG');
            img.src = FAVICON_GRABBER + host;
            img.width = '16';
            img.height = '16';
            img.className = 'favicon';
            links[i].insertBefore(img, links[i].firstChild);
        }
    }
}

add_favicons_to(document.querySelectorAll(QUERY));

/**
 * Debounce function from http://code.google.com/p/jquery-debounce/
 */
function debounce(fn, timeout, invokeAsap, context) {
    if (arguments.length == 3 && typeof invokeAsap != 'boolean') {
        context = invokeAsap;
        invokeAsap = false;
    }
    var timer;
    return function() {
        var args = arguments;
        if(invokeAsap && !timer) {
            fn.apply(context, args);
        }
        clearTimeout(timer);
        timer = setTimeout(function() {
            if(!invokeAsap) {
                fn.apply(context, args);
            }
            timer = null;
        }, timeout);
    };
}

document.addEventListener('DOMNodeInserted', debounce(function handleNewFavicons(event){
        if (event.target.className != 'favicon') {
            add_favicons_to(document.querySelectorAll(QUERY));
        }
    }, 500)
, false);

})();

soll, FaviconizeGoogle 1.8.4, с Greasy Fork, работает без проблем в Tampermonkey.

soll
Я пользуюсь https://greasyfork.org/ru/scripts/29863-gicon

vitalii201 пишет

FaviconizeGoogle 1.8.4, с Greasy Fork, работает без проблем

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

xrun1 пишет

Я пользуюсь https://greasyfork.org/ru/scripts/29863-gicon

спасибо, попробовал, вроде работает нормально. Пока остановлюсь на нём, буду наблюдать.
Всем спасибо за помощь.:beer:

Привет!
Я заблокировал весь дзен и всю рекламу на главной странице яндекса.
Стало много пустого пространства на главной.
В новостном блоке по умолчанию пять новостей, а остальные скрыты
Чтобы их развернуть надо тыкнуть два раза на "показать еще"
Можно ли попросить умеющих людей написать код, чтобы все новости были всегда развернутыми?
Как будто бы уже была нажата кнопка "показать еще"

leex пишет

Привет!
Я заблокировал весь дзен и всю рекламу на главной странице яндекса.
Стало много пустого пространства на главной.

Яндекс-дзен лучше заблокировать правилом  для  UBO :offtopic:

kokoss пишет

Яндекс-дзен лучше заблокировать правилом  для  UBO

Так и есть.
Оно же, но для телефона

скрытый текст

Выделить код

Код:

yandex.ru###zen #zen-row-2 ~ div
yandex.ru##div[data-blockname^="infinity_zen"]

По поводу вкладки канала по умолчанию.
YT video tab by default

Старенький (переехал со мной с Opera Presto 14 на [firefox]), но до сих пор рабочий код для выделения части ссылки.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name           Select text from links
// @namespace      http://operafan.net/forum/index.php?topic=11837.msg205482#msg205482
// @version        0.1
// @description    Выделение текста ссылки
// @match          *
// @grant          none
// @run-at         document-start
// ==/UserScript==
/* Конфликтует со скриптом AllowCopy-ContextMenu. Поэтому сделал букмарклет для конфликтного */

// Удалить мусорные параметры из адресной строки браузера.
(function utmRemove() {
    if (/[?&]utm_/.test(location.search) && history.replaceState){
        history.replaceState(null,'', location.href.replace(/[?&]utm_.*/,''));
    }
})();

// Выделение ссылок
(function olls() {
function OPLLS() {
  this.init.apply(this, arguments);
}
OPLLS.prototype = {
  handleEvent: function (e) {
    switch (e.type) {
    case 'mouseup':
      if (!getSelection() .toString()) break;
//      console.log('mouseup');
      var t = e.target;
      while (t.nodeName != 'A' && t.nodeName != 'HTML') t = t.parentNode;
      if (!t.href) {
//        console.log('uninit');
        this.uninit();
      }
      break;
    case 'click':
      if (!getSelection() .toString()) {
//        console.log('clicked and uninit');
        this.uninit();
        break;
      }
      e.preventDefault();
      e.stopPropagation();
//      console.log('selected and uninit');
      this.uninit();
    }
  },
  init: function (e) {
    var t = e.target;
    if (t.nodeName == 'IMG') return ;
    while (t.nodeName != 'A' && t.nodeName != 'HTML') t = t.parentNode;
    if (!t.href) return ;
    t.draggable = false;
//    console.log('OK');
    document.addEventListener('mouseup', this, true);
    document.addEventListener('click', this, true);
  },
  uninit: function () {
    document.removeEventListener('mouseup', this, true);
    document.removeEventListener('click', this, true);
  }
}
document.addEventListener('mousedown', function (e) {
  if (e.button != 0 || e.ctrlKey || e.altKey || e.shiftKey) return ;
  new OPLLS(e);
}, false);
})();

Сделал скрипт, который копирует выделенное в буфер обмена и выводит сообщение в правом нижнем углу окна. Если стоит предыдущий, копирует и часть ссылки.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name         Autocopy
// @namespace    https://addons.mozilla.org/en-US/firefox/addon/copy-on-select/
// @version      0.2.3
// @description  Copy On Select
// @author       spyrosoft & erosman (Copy PlainText) & xrun1 https://forum.mozilla-russia.org/viewtopic.php?pid=800380#p800380
// @match        *
// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADbklEQVQ4T2WTe0xTVxzHv6elbytdeThBxMkjbLNoonMDiRONUR5Lli2ZZj7SkCWbj4iEPzaZWY0RybKhISNBE900RPfIzBzJQqZGx3Cgwsok9kKDpRasKClQ+gQu9x5/l4SkyU7yyf0l5/f73vM7399hSFicc7bhIyHLaJLLc1YYipkqaf0j1z/VPdf2dFNanJAT85WY2Sr6X+FqsdSarH23sMBckpdnfj1nldGQk62H3z+LI0dPnRD+PvUj5fqI2f8J7Kt7MvzejtTXrKl6JOnVMBkAzgGjFogGRVTtr77o6m65YM0tEwqKGleqpGH/3auV0yREWeCs4dJ4aOvONHMsBmgZoEsCpoIcMzMcy8wiHF/fdMXj833FxRvWSUyzputeX13nlbKLVDxFiKzxaiC0rTTFLDym9iSgtz+CQGAWWekMma+qkZ6uxfIMA0xLVDDyedgPnG/tun64mYoFIsLOXQuEtm5OMXufyvCPzWJoKIhNJVbol2ih0zGo1YBGRadTkCRUHfzmj+62Y01U3EMEmeO8323/MCPf7eNwe2JIs0hY/eZSagGgWoTDMsFhXarCqnQZn9Z8d+P2TzWNtPVgQaD27OPfvvos5/2xCeDWvRiCoTgqd6ZAGJIhihwmHV2oHtDTafIzGeqb2x+2OCq+pGLF2km293jfiW9rbY65eTV6BRHuJ2HsqrTSV15wQ5LoQsm85SkMb2QzfP+7Z6Luk8LDc/H4XyTwnH1Q3fbWEfu2jpJCo6H1hojgdBS7yy0QPBK0GgaN0ge5EyBn3i5QwzUSna8+VNXwsPOXy7TjpS3o6i9722t2Z5eOjAPXO8KwV5jgHmWYjnAkmxgMNBMGakOJjXqOky3tna1NB+umno04FQHVx5//vH3jO1t+GPUMTPh8Yd54fIeNQ4PJkIw4HV/5exLNR1Yag221Ck6fhF/bu9oaDmw+qggoy2gyWfKj0WBuRm7RsuYLbfVlRanJfXSRmdR7qoWspHYicxzDL0RpcGQq3NPdcb/pi12nFwXIZRgJM6GuOeM8Xbt/7T6LmcE7LnHBOxHpfzQ4Jvx31zPovDPsdt4ZlWX5BeUOLAokvhFWbj+7Ns+20RF46tII/958PtD7p28mFiKjMUkECCUOLsxBYmVCTO5jBbGS0CwmK3NF0KsBjRlEQn4JjqVp072tMtsAAAAASUVORK5CYII=
// @grant        none
// @run-at       document-start
// ==/UserScript==
'use strict';
// CB & uc.js https://forum.mozilla-russia.org/viewtopic.php?pid=803196#p803196

// define
const remove_selection = false; // после копирования снимать выделение (true)
const plain_text = false; // без форматирования (true)
const balloon = true; // всплывающее сообщение
const balloon_text = 'Скопировано в буфер обмена!';
const balloon_time = 1000; // время сообщения на экране; 1 секунда = 1000 миллисекунд
var balloon_bgc = "blue"; // фон "всплывашки"

if (plain_text) balloon_bgc = "black"; // чёрный цвет всплывающего окна при копировании без форматирования

function alertTimeout(mymsg, mysecs, mybgcolor)
{
    var myelement = document.createElement("div");
    myelement.setAttribute("style","background-color: " + mybgcolor + ";color: white;width: 220px;height: 30px;position: fixed;bottom: 2px;right: 2px;margin: auto;border: 1px solid #ffd700;font-family: verdana;font-size: 12px;display: flex; align-items: center; justify-content: center; text-align: center; z-index: 99999;");
    myelement.innerHTML = mymsg;
    document.body.appendChild(myelement);
    setTimeout(function() {
        myelement.parentNode.removeChild(myelement);
        if (remove_selection) document.getSelection().removeAllRanges(); // для IE8- document.selection.empty();
    }, mysecs);
}

function autoCopy(e) {
        var any_text = document.getSelection().toString();
        if (any_text != '') {
            if (plain_text) {
//                alert( 'без форматирования' );
                var result1 = any_text.replace(/[\r\n]+/g, '\n');
                any_text = result1.replace(/[ \t\f\v]+/g, ' ');
                navigator.clipboard.writeText(any_text);
            } else {
//                alert( 'с форматированием' );
                document.execCommand('copy'); // планируется отключение https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand#browser_compatibility
//                navigator.clipboard.writeText(any_text);
            }
            if (balloon) alertTimeout(balloon_text, balloon_time, balloon_bgc);
//            e.preventDefault();
//            e.stopPropagation();
        }
}

// если надо только по Ctrl+С или из меню заменить 'click' на 'copy'
window.addEventListener('click', autoCopy, true); // теоретически достаточно для tamper и violent false, для grase true


P.S. Режим "без форматирования" актуален только на некоторых сайтах и только для [firefox] - удаляет лишние разрывы строк. Например, здесь.
P.P.S. Если не заработает. Tampermonkey рекомендует использовать // @match для списка включённых сайтов. Я это сделал, но у себя выбрал второй способ.
2 решения.
1. Заменить в заголовке скрипта // @match  на // @include, но будет жёлтый треугольник предупреждения.
2. В настройках скрипта вручную добавить * (звёздочку), как на скрине.
скрытый текст
pxes40i.png

xrun1 пишет

leex
Привет. У меня работает такой код
скрытый текст

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

xrun1
Здравствуйте, уважаемый!

Когда "Яндекс Новости" переехали на Дзен, я поправил наш код для Дзена и немного для Риа — он корректно работал до последнего времени.

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

Вот наш код для "Дзен Новости".


скрытый текст
// ==UserScript==
// @name         Stop scrolling on Dzen.News
// @author       CoolCmd
// @namespace    https://forum.mozilla-russia.org/viewtopic.php?pid=762360#p762360 , https://forum.mozilla-russia.org/viewtopic.php?pid=784579#p784579
// @description  Не прокручивать страницу в Дзен.Новости при клике на ссылку "В источнике" или на ссылках в блоке "Подробнее о событии"
// @icon         https://yastatic.net/s3/web4static/_/v2/ZcejnfbLE_TlMK13nS41mdC4A88.png
// @version      1
// @match        https://dzen.ru/news/*
// @match        https://dzen.ru/news/story/*
// @match        https://dzen.ru/sport/*
// @match        https://ria.ru/*
// @grant        none
// @run-at       document-start
// ==/UserScript==
'use strict';
window.addEventListener(
  'click',
  e =>
  {
      let in_source = e.target.closest('a[href].mg-story__meta'); // ссылка "В источнике"
      let published_in = e.target.closest('a[href].mg-story__doc-reference'); // ссылка в блоке "С чего всё началось" типа "опубликовал в Instagram"
      let from_agency = e.target.closest('a[href].mg-snippet__agency-info'); // ссылка в блоке "С чего всё началось" типа источник
      let from_group_source = e.target.closest('a[href].mg-snippets-group__source'); // 27.10.2021 источник из группы новостей
      let more_about_events = e.target.closest('a[href].mg-snippet__url'); // ссылки "Подробнее о событии"
      let in_source_sport = e.target.closest('a[href].news-story__meta.link'); // ссылка "В источнике" для /sport/
      let about_events_show_more = e.target.closest('a[href].news-card-snippet__info-link'); // ссылки "Подробнее о событии" для /sport/
      let news_story_subtitle = e.target.closest('a[href].news-story__subtitle'); // ссылка "В подзаголовоке"
      if (in_source || published_in || from_agency || from_group_source || more_about_events || in_source_sport || about_events_show_more || news_story_subtitle)
    {
      e.stopImmediatePropagation();
      e.stopPropagation();
    }
  },
  true
);

leex
Приветствую!
Видел это непотребство и поправил код. Проверяйте.

xrun1

Магия! :)
Работает как швейцарские часики!
Благодарю! :beer:

xrun1 пишет

Сделал скрипт, который копирует выделенное в буфер обмена

Что-то он не работает у меня, подключенный в Tampermonkey.

rubel
Попробуйте, как у меня. Работает, тоже в Tampermonkey.

скрытый текст

Выделить код

Код:

// ==UserScript==
// @name         Autocopy
// @namespace    https://addons.mozilla.org/en-US/firefox/addon/copy-on-select/
// @version      0.2
// @description  Copy On Select
// @author       spyrosoft & erosman (Copy PlainText) & xrun1
// @match        *
// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADbklEQVQ4T2WTe0xTVxzHv6elbytdeThBxMkjbLNoonMDiRONUR5Lli2ZZj7SkCWbj4iEPzaZWY0RybKhISNBE900RPfIzBzJQqZGx3Cgwsok9kKDpRasKClQ+gQu9x5/l4SkyU7yyf0l5/f73vM7399hSFicc7bhIyHLaJLLc1YYipkqaf0j1z/VPdf2dFNanJAT85WY2Sr6X+FqsdSarH23sMBckpdnfj1nldGQk62H3z+LI0dPnRD+PvUj5fqI2f8J7Kt7MvzejtTXrKl6JOnVMBkAzgGjFogGRVTtr77o6m65YM0tEwqKGleqpGH/3auV0yREWeCs4dJ4aOvONHMsBmgZoEsCpoIcMzMcy8wiHF/fdMXj833FxRvWSUyzputeX13nlbKLVDxFiKzxaiC0rTTFLDym9iSgtz+CQGAWWekMma+qkZ6uxfIMA0xLVDDyedgPnG/tun64mYoFIsLOXQuEtm5OMXufyvCPzWJoKIhNJVbol2ih0zGo1YBGRadTkCRUHfzmj+62Y01U3EMEmeO8323/MCPf7eNwe2JIs0hY/eZSagGgWoTDMsFhXarCqnQZn9Z8d+P2TzWNtPVgQaD27OPfvvos5/2xCeDWvRiCoTgqd6ZAGJIhihwmHV2oHtDTafIzGeqb2x+2OCq+pGLF2km293jfiW9rbY65eTV6BRHuJ2HsqrTSV15wQ5LoQsm85SkMb2QzfP+7Z6Luk8LDc/H4XyTwnH1Q3fbWEfu2jpJCo6H1hojgdBS7yy0QPBK0GgaN0ge5EyBn3i5QwzUSna8+VNXwsPOXy7TjpS3o6i9722t2Z5eOjAPXO8KwV5jgHmWYjnAkmxgMNBMGakOJjXqOky3tna1NB+umno04FQHVx5//vH3jO1t+GPUMTPh8Yd54fIeNQ4PJkIw4HV/5exLNR1Yag221Ck6fhF/bu9oaDmw+qggoy2gyWfKj0WBuRm7RsuYLbfVlRanJfXSRmdR7qoWspHYicxzDL0RpcGQq3NPdcb/pi12nFwXIZRgJM6GuOeM8Xbt/7T6LmcE7LnHBOxHpfzQ4Jvx31zPovDPsdt4ZlWX5BeUOLAokvhFWbj+7Ns+20RF46tII/958PtD7p28mFiKjMUkECCUOLsxBYmVCTO5jBbGS0CwmK3NF0KsBjRlEQn4JjqVp072tMtsAAAAASUVORK5CYII=
// @grant        none
// @run-at       document-start
// ==/UserScript==
'use strict';
// CB & uc.js https://forum.mozilla-russia.org/viewtopic.php?pid=803196#p803196

// define
const remove_selection = false; // после копирования снимать выделение (true)
const plain_text = false; // без форматирования (true)
const balloon = true; // всплывающее сообщение

function alertTimeout(mymsg, mysecs)
{
    var myelement = document.createElement("div");
    myelement.setAttribute("style","background-color: blue;color: white;width: 220px;height: 30px;position: fixed;bottom: 2px;right: 2px;margin: auto;border: 1px solid #ffd700;font-family: verdana;font-size: 12px;display: flex; align-items: center; justify-content: center; text-align: center;");
    myelement.innerHTML = mymsg;
    document.body.appendChild(myelement);
    setTimeout(function() {
        myelement.parentNode.removeChild(myelement);
        if (remove_selection) document.getSelection().removeAllRanges(); // для IE8- document.selection.empty();
    }, mysecs);
}
// если надо только по Ctrl+С или из меню заменить 'mouseup' на 'copy'
window.addEventListener (
	'mouseup',
	e =>
    {
        const any_text = document.getSelection().toString();
		if (any_text != '') {
            if (plain_text) {
//                alert( 'без форматирования' );
                var result1 = any_text.replace(/[\r\n]+/g, '\n');
                var result2 = result1.replace(/[ \t\f\v]+/g, ' ');
                navigator.clipboard.writeText(result2);
            } else {
//                alert( 'с форматированием' );
                document.execCommand('copy');
            }
            if (balloon) alertTimeout('Скопировано в буфер обмена!', 1000); // 1 секунда = 1000 миллисекунд
            e.preventDefault();
            e.stopPropagation();
        }
	},
    false
);

xrun1
Этот тоже не работает, хотя и подключен. Остальные 10 скриптов работают нормально.
df13b31444dc13d7f1ae950adab208a5.png

rubel
Tampermonkey рекомендует использовать // @match для списка включённых сайтов. Я это сделал, но у себя выбрал второй способ.
2 решения.
1. Заменить на // @include, но будет жёлтый треугольник предупреждения.
2. В настройках скрипта вручную добавить * (звёздочку), как на скрине.

скрытый текст
https://i.imgur.com/pxes40i.png

P.S. Вроде, поиск гугл сейчас сам показывает иконки у сайтов, Faviconize не нужен.

xrun1
Ок. Спасибо.

Привет всем.
Есть у кого скрипт для вставки из буфера кликом колесика?

Ultima2m пишет

Есть у кого скрипт

Это не скрипт, это настройки [firefox] Middlemouse.paste

Farby пишет

Ultima2m пишет Есть у кого скриптЭто не скрипт, это настройки  Middlemouse.paste

О, спасибо, заработало. А Blink Selected сломали?