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

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

№90101-05-2018 22:27:03

foxfox
Участник
 
Группа: Members
Зарегистрирован: 19-10-2013
Сообщений: 20
UA: Firefox 56.0

Re: Greasemonkey

Я начал тренироваться на трекерах. Для рутрекера сработало следующее:

Выделить код

Код:

// ==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 (02-05-2018 00:10:45)

Отсутствует

 

№90202-05-2018 05:25:58

pointer
Участник
 
Группа: Members
Откуда: планета Земля
Зарегистрирован: 09-12-2011
Сообщений: 44
UA: Firefox 52.0

Re: Greasemonkey

foxfox пишет

Если не закомментить "setTimeout(ClickComment, 1000)", то комменты будут открываться и закрываться со скоростью 1 секунда. Если вместо 1000 поставить 100, то - значительно быстрее. Непонятно зачем сделан рекурсивный вызов функции.

Вообще говоря - всё это жутко интересно.

Дело в том, что, например, на том же LJ комменты подгружаются динамически, т.е. послезагрузки страницы срабатывает скрипт GM, а комменты загружаются чуть позже. Из-за этого скрипт не раскрывает их, если выполняется сразу после загрузки страницы. Можно, конечно, поставить 10000 и вызывать функцию 1 раз. Но у меня в коде выше не зря сделано "if (links[i].style.display == 'none') continue;" - если ссылка "развернуть" скрыта, значит, комментарий раскрыть, и скрипт по ней не щёлкает.

Отсутствует

 

№90302-05-2018 10:54:14

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

Re: Greasemonkey

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 (02-05-2018 10:55:37)

Отсутствует

 

№90402-05-2018 12:19:05

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9558
UA: Seamonkey 2.14

Re: Greasemonkey

leshiy_odessa пишет: Но есть очень неприятный баг. Так как скрипт отрабатывает каждые setTimeout — 1-6000 мс, то соответственно фокус смещается в другое место. То есть если мы нажмем в меню и начнем выбирать какую то функцию, например размер 1080p, то через секунду получим смещение фокуса, то есть закрытие этого меню, так как фактически мышка уже нажата в другом месте экрана.

если вручную то да если программно то пофиг где находится элемент и виден ли он и где фокус, главное чтоб он вообще существовал и клик будет именно по нему.
есличто я про element.click()


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

Отсутствует

 

№90522-05-2018 15:19:20

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Chrome 66.0
Веб-сайт

Re: Greasemonkey

Почему 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 (22-05-2018 15:20:27)

Отсутствует

 

№90622-05-2018 15:35:21

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

Re: Greasemonkey

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

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

Отсутствует

 

№90722-05-2018 15:55:17

selevo
Забанен
 
Группа: Members
Откуда: Ижевск
Зарегистрирован: 23-01-2008
Сообщений: 240
UA: Chrome 66.0
Веб-сайт

Re: Greasemonkey

Благодарю,с таким извратом заработало, странно что    в  html   документе javascript нормально выводит
может здесь какой-то  урезанный alert ?
знак  ; я правда не ставил мне   надо  формат: 2018522165637
:-)

Отредактировано selevo (22-05-2018 15:57:18)

Отсутствует

 

№90808-06-2018 13:03:21

RoxMarty
Участник
 
Группа: Members
Зарегистрирован: 14-03-2015
Сообщений: 28
UA: Firefox 59.0

Re: Greasemonkey

Возможно ли (и как?) можно сделать при помощи Greasemonkey взаимодействие с расширением Brief для кастомизации вывода RSS ленты в нём?
Пример приводил в этом посте

Отсутствует

 

№90908-06-2018 16:16:59

drage2
Забанен
 
Группа: Members
Откуда: Донецк
Зарегистрирован: 23-11-2017
Сообщений: 392
UA: Firefox 60.0

Re: Greasemonkey

Никто еще не придумал скрипт для Rutube? , типа Inject2Download ?. НLS брать....

Отсутствует

 

№91016-06-2018 14:32:15

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

Re: Greasemonkey

Доброе время, форумчане!
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 (16-06-2018 14:34:13)

Отсутствует

 

№91116-06-2018 16:02:57

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9558
UA: Seamonkey 2.14

Re: Greasemonkey

xrun1 пишет: Можно ли сделать 2 скрипта из кнопок?

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


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

Отсутствует

 

№91216-06-2018 16:39:51

sonyas75
Участник
 
Группа: Members
Откуда: Ставрополь
Зарегистрирован: 22-03-2011
Сообщений: 557
UA: Firefox 57.0

Re: Greasemonkey

у меня в 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

Отсутствует

 

№91316-06-2018 21:05:05

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

Re: Greasemonkey

okkamas_knife
Спасибо за пояснение. Жаль.
sonyas75
У меня CB отвалился после обновления [firefox] с 59.0.3 на 60. Вычистил реестр, пробовал установить начисто, с разными костылями и версиями CB. Даже проверил чистую установку 60-й на виртуалке Win7x32. Не работает. Как  у других (не ESR) работает - удивляюсь.
Где-то здесь скачал портабельную 60-ю, кнопки работают, но пользоваться ей не выход.
Сделал 4 кнопки на CSS, 3 из них - запуск сторонних приложений. Пожалуй, 1-ю хотелку свою можно сделать, надо спросить в теме про настройки внешнего вида, а про 2-ю забыть.

Отсутствует

 

№91417-06-2018 14:08:16

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

Re: Greasemonkey

Для версий [firefox] до Quantum было удобное расширение "Space Next". Кликаешь клавишей "пробел" на форумах или в поиске - страничка прокручивается на один экран, а по достижении конца переходит на следующую страницу, если есть. Была одна "закавыка", так и не собрался тогда написать автору - на ru-board переход на следующую страницу срабатывал только при клике на кнопку. А в поиске или других форумах всё работало отлично.
Открыл, посмотрел - но моих знаний явно не хватает для редактирования js из этого расширения, да и файл там не маленький.
Вот ссылки
https://yadi.sk/d/xcVWd6Ww3Y23nn
https://addons.mozilla.org/en-US/firefox/addon/space-next/
Вдруг кто-то захочет поковырять... Лично мне, было очень удобно откинувшись в кресле просто кликать на пробел для перехода на следующую страницу читаемого форума или страницы поиска.

Отсутствует

 

№91507-08-2018 13:05:04

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1700
UA: Firefox 55.0

Re: Greasemonkey

Ребята, вы бы не могли помочь пожалуйста
если не сложно создать скрипт который превращает текст начинающийся с @ (название аккаунта инстаграм) в ссылку на инстаграм профиль?

Например:

Instagram:
@masta_dilemma  →  https://www.instagram.com/masta_dilemma
@tomashlukach     →  https://www.instagram.com/tomashlukach
@nikamanika_      →   https://www.instagram.com/nikamanika_

Отсутствует

 

№91609-08-2018 07:06:54

pointer
Участник
 
Группа: Members
Откуда: планета Земля
Зарегистрирован: 09-12-2011
Сообщений: 44
UA: Firefox 52.0

Re: Greasemonkey

Я не знаю точный формат ссылок в 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;
  }
}

Отсутствует

 

№91709-08-2018 10:25:10

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1700
UA: Firefox 55.0

Re: Greasemonkey

pointer пишет

Я не знаю точный формат ссылок в inst

Вот например пишет человек название своего инстаграм аккаунта: @myrziko
А можно ли сделать чтобы это название становилось ссылкой на https://www.instagram.com/myrziko

Отредактировано Stkvsky (09-08-2018 10:25:36)

Отсутствует

 

№91809-08-2018 17:53:46

pointer
Участник
 
Группа: Members
Откуда: планета Земля
Зарегистрирован: 09-12-2011
Сообщений: 44
UA: Firefox 52.0

Re: Greasemonkey

Stkvsky,  а мой код выше-то работает?

Если нет, то напишите тут полный формат ссылки вот так:
<a href="...">@...</a>
В общем, всё, что между тегами A/A.

Отсутствует

 

№91909-08-2018 21:35:24

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1700
UA: Firefox 55.0

Re: Greasemonkey

pointer
Не, не работает. Я просто не пойму правильно ли вы меня поняли.
Я имею ввиду чтобы на всех сайтах где написан текст названия аккаунта инстаграм (@названиеаккаунта)
становился ссылкой на этот аккаунт (https://www.instagram.com/названиеаккаунта)
Я не пойму какой полный формат какой ссылки.

Отредактировано Stkvsky (09-08-2018 21:35:49)

Отсутствует

 

№92010-08-2018 04:30:17

pointer
Участник
 
Группа: Members
Откуда: планета Земля
Зарегистрирован: 09-12-2011
Сообщений: 44
UA: Firefox 52.0

Re: Greasemonkey

Stkvsky пишет

Я имею ввиду чтобы на всех сайтах где написан текст названия аккаунта инстаграм (@названиеаккаунта)
становился ссылкой на этот аккаунт (https://www.instagram.com/названиеаккаунта)

Это я понял. Полный формат - просто пример ссылки: всё, что между тегами <a...></a>. С атрибутами тега, конечно (href и пр.).

Отсутствует

 

№92110-08-2018 15:10:04

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1700
UA: Firefox 55.0

Re: Greasemonkey

pointer
Так для разных аккаунтов это же будут разные ссылки.
Я имею ввиду чтобы все слова с названиями аккаунтов на странице становились ссылками на эти аккаунты в инстаграм.
То есть из любого слова начинающегося с @ (например: @masha) делать ссылку на инсиаграм аккаунт (https://www.instagram.com/masha)

Отсутствует

 

№92229-08-2018 02:53:02

Rag
Участник
 
Группа: Members
Откуда: Краснодон
Зарегистрирован: 06-03-2017
Сообщений: 247
UA: Firefox 52.0

Re: Greasemonkey

Доброго дня всем.
Можно ли как то проверить RU AdList JS Fixes?
Киньте ссылку (если не затруднит) на сайт где явно видна работа скрипта.

Отсутствует

 

№92329-08-2018 07:18:56

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

Re: Greasemonkey

Rag
В поиск яндекса - контекстная реклама.  Будет 2-4 блока помеченных "реклама".

Отсутствует

 

№92429-08-2018 07:52:43

Rag
Участник
 
Группа: Members
Откуда: Краснодон
Зарегистрирован: 06-03-2017
Сообщений: 247
UA: Firefox 52.0

Re: Greasemonkey

oleg.sgh
Спасибочки!
А то я смотрю что со скриптом что без вроди одно и тоже.
Ан нет,работает - режет рекламу.

Отсутствует

 

№92527-09-2018 15:50:13

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1700
UA: Firefox 55.0

Re: Greasemonkey

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

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

Выделить код

Код:

// ==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');

        }
    });
})

Отсутствует

 

Board footer

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