Я начал тренироваться на трекерах. Для рутрекера сработало следующее:
// ==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)
Отсутствует
Если не закомментить "setTimeout(ClickComment, 1000)", то комменты будут открываться и закрываться со скоростью 1 секунда. Если вместо 1000 поставить 100, то - значительно быстрее. Непонятно зачем сделан рекурсивный вызов функции.
Вообще говоря - всё это жутко интересно.
Дело в том, что, например, на том же LJ комменты подгружаются динамически, т.е. послезагрузки страницы срабатывает скрипт GM, а комменты загружаются чуть позже. Из-за этого скрипт не раскрывает их, если выполняется сразу после загрузки страницы. Можно, конечно, поставить 10000 и вызывать функцию 1 раз. Но у меня в коде выше не зря сделано "if (links[i].style.display == 'none') continue;" - если ссылка "развернуть" скрыта, значит, комментарий раскрыть, и скрипт по ней не щёлкает.
Отсутствует
Дело в том, что, например, на том же 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)
Отсутствует
leshiy_odessa пишет: Но есть очень неприятный баг. Так как скрипт отрабатывает каждые setTimeout — 1-6000 мс, то соответственно фокус смещается в другое место. То есть если мы нажмем в меню и начнем выбирать какую то функцию, например размер 1080p, то через секунду получим смещение фокуса, то есть закрытие этого меню, так как фактически мышка уже нажата в другом месте экрана.
если вручную то да если программно то пофиг где находится элемент и виден ли он и где фокус, главное чтоб он вообще существовал и клик будет именно по нему.
есличто я про element.click()
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
Почему 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)
Отсутствует
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
На форуме
Благодарю,с таким извратом заработало, странно что в html документе javascript нормально выводит
может здесь какой-то урезанный alert ?
знак ; я правда не ставил мне надо формат: 2018522165637
:-)
Отредактировано selevo (22-05-2018 15:57:18)
Отсутствует
Возможно ли (и как?) можно сделать при помощи Greasemonkey взаимодействие с расширением Brief для кастомизации вывода RSS ленты в нём?
Пример приводил в этом посте
Отсутствует
Доброе время, форумчане!
CB у меня в 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'));
// Очистить панель поиска прокруткой колёсиком мыши на панели поиска, от 19.09.2014. .............. (function () { var searchbar = document.getElementById("searchbar"); if ( !searchbar ) return; addEventListener('DOMMouseScroll', function(){ searchbar.textbox.value = ''; }, false, searchbar ); })();
Отредактировано xrun1 (16-06-2018 14:34:13)
Отсутствует
xrun1 пишет: Можно ли сделать 2 скрипта из кнопок?
нет. у гризманки нет прав работать с интерфейсом - оно только для сраниц предназначено. а у тебя там работа с интерфейсом
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
у меня в 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 отвалился после обновления с 59.0.3 на 60. Вычистил реестр, пробовал установить начисто, с разными костылями и версиями CB. Даже проверил чистую установку 60-й на виртуалке Win7x32. Не работает. Как у других (не ESR) работает - удивляюсь.
Где-то здесь скачал портабельную 60-ю, кнопки работают, но пользоваться ей не выход.
Сделал 4 кнопки на CSS, 3 из них - запуск сторонних приложений. Пожалуй, 1-ю хотелку свою можно сделать, надо спросить в теме про настройки внешнего вида, а про 2-ю забыть.
Отсутствует
Для версий до 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; } }
Отсутствует
Я не знаю точный формат ссылок в inst
Вот например пишет человек название своего инстаграм аккаунта: @myrziko
А можно ли сделать чтобы это название становилось ссылкой на https://www.instagram.com/myrziko
Отредактировано Stkvsky (09-08-2018 10:25:36)
Отсутствует
pointer
Не, не работает. Я просто не пойму правильно ли вы меня поняли.
Я имею ввиду чтобы на всех сайтах где написан текст названия аккаунта инстаграм (@названиеаккаунта)
становился ссылкой на этот аккаунт (https://www.instagram.com/названиеаккаунта)
Я не пойму какой полный формат какой ссылки.
Отредактировано Stkvsky (09-08-2018 21:35:49)
Отсутствует
Я имею ввиду чтобы на всех сайтах где написан текст названия аккаунта инстаграм (@названиеаккаунта)
становился ссылкой на этот аккаунт (https://www.instagram.com/названиеаккаунта)
Это я понял. Полный формат - просто пример ссылки: всё, что между тегами <a...></a>. С атрибутами тега, конечно (href и пр.).
Отсутствует
pointer
Так для разных аккаунтов это же будут разные ссылки.
Я имею ввиду чтобы все слова с названиями аккаунтов на странице становились ссылками на эти аккаунты в инстаграм.
То есть из любого слова начинающегося с @ (например: @masha) делать ссылку на инсиаграм аккаунт (https://www.instagram.com/masha)
Отсутствует
Ребята, помогите пожалуйста немного изменить скрипт для ютуба.
Он перематывает видео колесиком мышки при зажатом шифте.
Можно ли отключить шифт, чтобы перематывалось только колесиком?
// ==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'); } }); })
Отсутствует