Добрый день!
Можно ли в при работающем скрипте в ТамперМанки принудительно скрывать/показывать кнопку созданную определенным скриптом?
Есть прикольный скрипт с закадровым переводом от яндекса.
https://github.com/ilyhalight/voice-over-translation
Встраивается в поддерживаемые браузерные плееры, в том числе и Ютуб.
Но при работающем скрипте, при движении курсора по окну плеера постоянно маячит - то появляясь, то исчезая, кнопка переводчика.
Отвлекает внимание, то она посреди экрана, то сбоку.
Было бы здорово держать эту кнопку скрытой и при необходимости показывать ее.
Например, новой кастомной кнопкой в панели меню справа от адресной строки, или зажатым Ctrl + ПКМ по экрану проигрывателя...
В ТМ можно включить и выключить скрипт, но необходима перезагрузка страницы, на горячую не работает.
Отредактировано leex (16-05-2024 20:27:12)
Отсутствует
leex
Муть, там дело в стиле, а не в скрипте. Стиль в скрипте. Вполне кнопку можно загнать за край экрана или в угол. Я просто не знаю чем разжать не тратя на это уйму времени. Пусть даст несжатый скрипт, или хотя бы стиль из срипта.
Отсутствует
Муть, там дело в стиле, а не в скрипте. Стиль в скрипте. Вполне кнопку можно загнать за край экрана или в угол. Я просто не знаю чем разжать не тратя на это уйму времени. Пусть даст несжатый скрипт, или хотя бы стиль из срипта.
Попросил автора несжатый скрипт или стиль.
Отправил пользователь:
.vot-segmented-button {
opacity: 0 !important;
overflow: visible;
}.vot-segmented-button:hover {
opacity: 1 !important;
}.vot-segmented-button:before {
content: '';
position: absolute;
inset: -150px -200px; // hover size
}.vot-segment-label {
display: none;
}.vot-segmented-button[data-status="error"] .vot-segment-label {
display: block;
}
Автор написал
в src
Отредактировано leex (19-06-2024 05:27:31)
Отсутствует
Продублирую скрипт здесь.
Браузеры Edge, Cent, Opera (проверял только эти) копируют картинку по Ctrl+C.
по этому сочетанию копирует урл-адрес картинки из адресной строки. Сделал скрипт, который по Ctrl+A --> Ctrl+С копирует картинку, а просто по Ctrl+С только адрес.
Проверял в Tampermonkey.
// ==UserScript== // @name Copy image with Ctrl+C (copy) // @namespace https://forum.mozilla-russia.org/viewtopic.php?pid=811018#p811018 Firefox Browser // @version 1.0 // @description Copy the image from Firefox browser using the keyboard shortcut Ctrl+C // @author xrun1 // @match https://*/* // @match file:///*/* // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACAElEQVQ4jcWTPWtUQRSGnzlncvcj2UgMRtj4AcEmEEhhpYViITbapRHSaCF2/gshjX/BRi2CjYUQFFHsLRWRICokQhZiiJq79+49cyzuLnGLgJ0vDAPzDs85M7wH/rfC2sOnvvmjxN0RwDxQ+cgWhAGGIAJm1Hc0QRVY6CTix92SF3M3xqhz2uNS6yVv86vs2Ikjq1dbz4iigaYM0Qm6us3r+fOo5FhqcWXrHdvWrf2/lSCqI8GgGSNNCWQxsjK1jkoOFlDJWZlaJxv6YytGPEB0BcVAEpqg592xQj3vMjH06zb0sAMLSEiJTCIZSiYNnherbPxepQxtNvqrbBQ3acZIRkZLS5ZPr3F5cYX5mVeAEO48eOIfFq4xO/2GTvsLZcrY3Vtmr38Rca+fk5R29o2lM7dpZT1IYNH4tXGX2Gl94sLSfTI5IJliBxWnGk6RT7Ozf53d8hbt9mfOnbyHMqDsA66ECjoT74mt7CtVKLAiUh04RRGociiLfTrlY45PPqJ1bALMSQMwV0JwUnLEnZj/TOTfDRUhVUbZd9KgTlJ7pkFQY9BPECAEJbpjIRESVJUQAcr9VH/rUNpQokGRl2iAFECjQnBSqGGeQLAaADaekdIoR2kbnbmhaQSrd68gdqcW0c02OkqaCWCYgBj1HKgdzgGgCJaM2cmzR8b8n/UHcLLgLSViuSsAAAAASUVORK5CYII= // @grant none // ==/UserScript== (function() { 'use strict'; // получаем адресную строку var stringPathName = window.location.pathname; // убираем сдвоенные слэши, бывают такие https://www.eurokdj.com//images/singles/c/sin_corona-the_rhythm_of_the_night.jpg stringPathName = stringPathName.trim() .replace('//', '/'); // ищем позицию последней точки var count = stringPathName.lastIndexOf('.'); // проверяем, есть точка? длина больше, чем позиция последней точки? if (count <= 0) { return; } else if (stringPathName.length <= count + 1) { return; } // получаем расширение var img_ext = stringPathName.substring(count + 1); // список допустимых расширений const array_images = ['bmp', 'gif', 'ico','jpeg', 'jpg', 'png', 'svg', 'webp']; // gif - копируется текущий кадр; svg не работает, можно убрать // есть полученное расширение в списке? if (!array_images.includes(img_ext)) return; // код скопирован отсюда ==>> https://openjavascript.info/2022/09/27/how-to-copy-an-image-to-the-clipboard-with-vanilla-javascript/ <<== const img = new Image(); const canvas = document.createElement('canvas'); const ctx = canvas.getContext('2d'); // Ctrl+A var ctrl_a = false; document.addEventListener('keydown', function(event) { if (event.code == 'KeyA' && (event.ctrlKey || event.metaKey)) { if (!ctrl_a) ctrl_a = true; } }); // Ctrl+C document.addEventListener('keydown', function(event) { if (event.code == 'KeyC' && (event.ctrlKey || event.metaKey)) { if (ctrl_a) { event.preventDefault(); copyToClipboard(stringPathName); } else { alertTimeout("Only the link was copied!", 1000, "blue"); navigator.clipboard.writeText(window.location); } } }); // снимаем выделение кликом в любом месте и убираем признак, что Ctrl+A нажато document.addEventListener('click', function(event) { ctrl_a = false; }); // Ждём нажатия Ctrl+C // document.addEventListener('copy', function(event) { // copyToClipboard(stringPathName); //}); function writeToCanvas(src) { return new Promise((res, rej) => { img.src = src; img.onload = function() { canvas.width = img.naturalWidth; canvas.height = img.naturalHeight; ctx.drawImage(img,0,0) canvas.toBlob((blob) => { res(blob); }, 'image/png'); } }); } async function copyToClipboard(src) { const image = await writeToCanvas(src); try { await navigator.clipboard.write([ new ClipboardItem({ [image.type]: image, }) ]); // console.log("Success"); alertTimeout("Successful image copying!", 1000, "blue"); } catch(err) { console.log("Copy failed: " + err); } } // Выводит сообщение об успешном копировании; неуспешное запишется в лог консоли (теоретически...) function alertTimeout(mymsg, mysecs, mybgcolor) { var myelement = document.createElement("div"); var L_msg = window.innerWidth/2 - 100; var T_msg = window.innerHeight/2 - 15; myelement.setAttribute("style","background-color: " + mybgcolor + "; color: white; width: 200px; height: 30px; position: fixed; left: " + L_msg + "px;" + "top: " + T_msg + "px; margin: auto; border: 1px solid #ffd700; font-family: verdana; font-size: 12px; display: flex;" + "align-items: center; justify-content: center; text-align: center; opacity: 0.6; z-index: 99999;"); myelement.innerHTML = mymsg; document.body.appendChild(myelement); setTimeout(function() { myelement.parentNode.removeChild(myelement); }, mysecs); } })();
Отредактировано xrun1 (28-10-2024 09:11:01)
Отсутствует