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

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№105103-10-2020 17:51:40

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 494
UA: unknown 0.0

Re: Greasemonkey

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';
        }

  });

  };


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№105203-10-2020 18:27:33

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 494
UA: unknown 0.0

Re: Greasemonkey

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

};


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№105303-10-2020 18:55:15

leshiy_odessa
Участник
 
Группа: Members
Зарегистрирован: 13-02-2009
Сообщений: 288
UA: Firefox 81.0

Re: Greasemonkey

mokujin пишет

Попробуй.

Сам URL имеет первозданный вид, а вот в открытой вкладке уже обрезанный.

Смысл в том, чтобы Firefox открывал уже обрезанный URL, а иначе он не зафиксируем «уже открытый» URL.

YbcJry2.png

Отсутствует

 

№105403-10-2020 19:40:46

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 494
UA: unknown 0.0

Re: Greasemonkey

leshiy_odessa пишет

Смысл в том, чтобы Firefox открывал уже обрезанный URL, а иначе он не зафиксируем «уже открытый» URL.

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


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№105504-10-2020 02:48:18

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 81.0

Re: Greasemonkey

Это только у меня переодически слетают все скрипты в Tampermonkey? Как их быстро восстановить из резервного профиля. А ещё лучше если кто-нибудь подскажет, как предотвратить слетание.
ЗЫ Не нашёл более подходящую тему, если есть более уместная, то перенесу, если кто направит.

Отсутствует

 

№105605-10-2020 02:48:52

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1160
UA: Firefox 81.0

Re: Greasemonkey

voqabuhe
У меня не слетают. Чем чистишь профиль? У меня свой батник + SpeedyFox.
С 79-й заметил такую вещь. Проверяй у себя.

Отсутствует

 

№105709-11-2020 11:20:43

mike2003
Участник
 
Группа: Members
Зарегистрирован: 29-04-2006
Сообщений: 267
UA: Firefox 82.0

Re: Greasemonkey

Можно ли с помощью Greasemonkey перенести кнопку YouTube?

скрытый текст
kYldSAw.jpg

Отсутствует

 

№105806-12-2020 09:59:57

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3141
UA: Firefox 78.0

Re: Greasemonkey

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

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

Отсутствует

 

№105906-12-2020 11:39:42

zzzephire
Участник
 
Группа: Members
Зарегистрирован: 29-12-2017
Сообщений: 791
UA: Firefox 83.0

Re: Greasemonkey

oleg.sgh пишет

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

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

Если есть Stylus/Stylish, то можно просто создать стиль для сайта. Комментарии будут развёрнутыми

Выделить код

Код:

div#userAcBlock { display: block !important; }

Отсутствует

 

№106006-12-2020 12:48:50

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3141
UA: Firefox 78.0

Re: Greasemonkey

zzzephire
Подойдёт. Благодарю.

Отсутствует

 

№106106-12-2020 15:39:24

leshiy_odessa
Участник
 
Группа: Members
Зарегистрирован: 13-02-2009
Сообщений: 288
UA: Firefox 83.0

Re: Greasemonkey

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

Отредактировано leshiy_odessa (06-12-2020 17:42:56)

Отсутствует

 

№106206-12-2020 16:33:58

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 494
UA: Firefox 68.0

Re: Greasemonkey

... а у меня такоев в 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);

 };


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№106306-12-2020 19:51:12

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3141
UA: Firefox 78.0

Re: Greasemonkey

leshiy_odessa, mokujin
Спасибо, буду иметь в виду.

Отсутствует

 

№106407-12-2020 14:05:41

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1160
UA: Firefox 83.0

Re: Greasemonkey

leshiy_odessa
mokujin
Не работают эти скрипты на ЖЖ, к сожалению. :( Я уже и сам писать пытался - никак.

Отсутствует

 

№106507-12-2020 15:47:26

leshiy_odessa
Участник
 
Группа: Members
Зарегистрирован: 13-02-2009
Сообщений: 288
UA: Firefox 83.0

Re: Greasemonkey

xrun1 пишет

Не работают эти скрипты на ЖЖ, к сожалению.

Приведите пример URL + скрин того что вы хотите развернуть.

Отсутствует

 

№106607-12-2020 17:15:56

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1160
UA: Firefox 83.0

Re: Greasemonkey

leshiy_odessa
Развернуть все комментарии, как по комбинации Ctrl + Alt + NumPad +
А сайт, например такой (это ЖЖ-шный сайт) https://shakko.ru/1598066.html
UPD: в // @include добавлял.

Отредактировано xrun1 (07-12-2020 17:17:31)

Отсутствует

 

№106707-12-2020 20:51:33

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 494
UA: Firefox 68.0

Re: Greasemonkey

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:) Всеядного, думаю, сделать низзя\сложно. хотя хз.


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№106809-12-2020 04:23:12

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1160
UA: Firefox 83.0

Re: Greasemonkey

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... Можно попробовать распотрошить расширение, оно у меня есть, но для меня там слишком много кода.

Отсутствует

 

№106909-12-2020 10:50:07

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 494
UA: Firefox 68.0

Re: Greasemonkey

Пример из другого скрипта:

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

Выделить код

Код:

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 (09-12-2020 11:08:14)


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№107010-12-2020 00:50:32

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1160
UA: Firefox 83.0

Re: Greasemonkey

mokujin
Кодов много нашёл. Все похожие и не работают. Буду нажимать клавиатуру на ЖЖ.:(

Отсутствует

 

№107112-02-2021 16:43:37

Raf-9600
Участник
 
Группа: Members
Зарегистрирован: 15-05-2007
Сообщений: 560
UA: Firefox 84.0

Re: Greasemonkey

На некоторых сайтах есть кнопка переключения языка интерфейса на русский язык. Как сделать чтобы при заходе на такой сайт сразу активировать событие этой кнопки? Допустим в случае с https://www.privat24.ua/
Я в скриптах нуб, поэтому хотелось бы увидеть готовый пример, по которому я бы смог понять логику, и дальше уже самостоятельно сделать такие автоматические переключалки для других сайтов.


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

Отсутствует

 

№107212-02-2021 22:23:48

zzzephire
Участник
 
Группа: Members
Зарегистрирован: 29-12-2017
Сообщений: 791
UA: Firefox 85.0

Re: Greasemonkey

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 пишет

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

У каждого сайта будет своя логика. Под каждый нужен будет индивидуальный подход.

Отредактировано zzzephire (13-02-2021 20:45:13)

Отсутствует

 

№107313-02-2021 01:56:08

Бумбик
Участник
 
Группа: Members
Зарегистрирован: 04-02-2012
Сообщений: 176
UA: Firefox 85.0

Re: Greasemonkey

на www.privat24.ua можно упростить

Выделить код

Код:

document.addEventListener('load', () => {
	localStorage.lang = 'ru';
	location.reload();
})

Отсутствует

 

№107413-02-2021 10:43:48

sn260591
Участник
 
Группа: Members
Зарегистрирован: 26-09-2015
Сообщений: 89
UA: Firefox 85.0

Re: Greasemonkey

Можно ещё проще и без перезагрузки страницы:

Выделить код

Код:

// ==UserScript==
// @name privat24.ua rus
// @match *://*.privat24.ua/*
// @run-at document-start
// ==/UserScript==

localStorage.lang = 'ru';

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

Отсутствует

 

№107513-02-2021 20:21:39

Raf-9600
Участник
 
Группа: Members
Зарегистрирован: 15-05-2007
Сообщений: 560
UA: Firefox 84.0

Re: Greasemonkey

Бумбик
sn260591
Ваши варианты не работают с этим сайтом.
.

zzzephire пишет

У каждого сайта будет своя логика

Да, я догадывался. Мне бы просто в общих чертах логику понять.
Сам я из программирования знаю лишь поверхностно C#. Английский не знаю.
.
Кстати, ваш код работает безупречно.
Буду с помощью Гугла выяснять что каждая строчка делает.
.
Благодарю что откликнулись.

Отредактировано Raf-9600 (13-02-2021 20:27:05)


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

Отсутствует

 

Board footer

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