NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Watch Transition // @namespace almaceleste // @version 0.2.0 // @description watches for a transition event and prints it to the console // @description:ru отслеживает событие transition и выводит его в консоль // @author (ɔ) Paola Captanovska // @license AGPL-3.0-or-later; http://www.gnu.org/licenses/agpl // @icon https://cdn1.iconfinder.com/data/icons/jumpicon-basic-ui-line-1/32/-_Eye-Show-View-Watch-See-16.png // @icon64 https://cdn1.iconfinder.com/data/icons/jumpicon-basic-ui-line-1/32/-_Eye-Show-View-Watch-See-64.png // @homepageURL https://greasyfork.org/en/users/174037-almaceleste // @homepageURL https://openuserjs.org/users/almaceleste // @homepageURL https://github.com/almaceleste/userscripts // @supportURL https://github.com/almaceleste/userscripts/issues // @updateURL https://github.com/almaceleste/userscripts/raw/master/src/Watch_Transition.user.js // @downloadURL https://github.com/almaceleste/userscripts/raw/master/src/Watch_Transition.user.js // @downloadURL https://openuserjs.org/install/almaceleste/Watch_Transition.user.js // @require https://code.jquery.com/jquery-3.3.1.js // @require https://openuserjs.org/src/libs/sizzle/GM_config.js // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // @grant GM_openInTab // @match http*://*/* // ==/UserScript== // ==OpenUserJS== // @author almaceleste // ==/OpenUserJS== const windowcss = ` #wtCfg { background-color: lightblue; } #wtCfg .reset_holder { float: left; position: relative; bottom: -1em; } #wtCfg .saveclose_buttons { margin: .7em; } #wtCfg_field_url { background: none !important; border: none; cursor: pointer; padding: 0 !important; text-decoration: underline; } #wtCfg_field_url:hover, #wtCfg_resetLink:hover { filter: drop-shadow(0 0 1px dodgerblue); } `; const iframecss = ` height: 34.5em; width: 25em; border: 1px solid; border-radius: 3px; position: fixed; z-index: 9999; `; GM_registerMenuCommand('Watch Transition Settings', opencfg); function opencfg(){ GM_config.open(); wtCfg.style = iframecss; } GM_config.init({ id: 'wtCfg', title: `Watch Transition ${GM_info.script.version}`, fields: { run: { section: ['', 'Watch events'], label: 'transitionrun (created, not started)', labelPos: 'right', title: 'fired when a CSS transition is created, when it is added to a set of running transitions, though not necessarily started', type: 'checkbox', default: false, }, start: { label: 'transitionstart (started)', labelPos: 'right', title: 'fired when a CSS transition has started transitioning', type: 'checkbox', default: false, }, cancel: { label: 'transitioncancel (canceled)', labelPos: 'right', title: 'fired when a CSS transition has been cancelled', type: 'checkbox', default: false, }, end: { label: 'transitionend (finished)', labelPos: 'right', title: 'fired when a CSS transition has finished playing (most useful)', type: 'checkbox', default: true, }, property: { label: 'print event property', labelPos: 'left', type: 'select', title: 'print one preferred event property before the whole event', options: [ 'none', 'bubbles', 'cancelBubble', 'cancelable', 'composed', 'currentTarget', 'defaultPrevented', 'elapsedTime', 'eventPhase', 'isTrusted', 'path', 'propertyName', 'pseudoElement', 'returnValue', 'srcElement', 'target', 'timestamp', 'type' ], default: 'target', }, italic: { section: ['', 'Style Settings'], label: 'italic font', labelPos: 'right', type: 'checkbox', default: false, }, bold: { label: 'bold font', labelPos: 'right', type: 'checkbox', default: false, }, method: { label: 'console method', labelPos: 'left', type: 'select', options: [ 'debug', 'dir', 'dirxml', 'error', 'info', 'log', 'warn' ], default: 'log', }, runcolor: { label: 'transitionrun color', labelPos: 'left', type: 'select', options: [ 'unset', 'black', 'blue', 'green', 'aqua', 'red', 'purple', 'yellow', 'white', 'gray', 'lightskyblue', 'lightgreen', 'orangered', 'pink', 'gold', 'whitesmoke', 'lightgray', 'dimgray' ], default: 'unset', }, runbackground: { label: 'transitionrun background', labelPos: 'left', type: 'select', options: [ 'unset', 'black', 'blue', 'green', 'aqua', 'red', 'purple', 'yellow', 'white', 'gray', 'lightskyblue', 'lightgreen', 'orangered', 'pink', 'gold', 'whitesmoke', 'lightgray', 'dimgray' ], default: 'unset', }, startcolor: { label: 'transitionstart color', labelPos: 'left', type: 'select', options: [ 'unset', 'black', 'blue', 'green', 'aqua', 'red', 'purple', 'yellow', 'white', 'gray', 'lightskyblue', 'lightgreen', 'orangered', 'pink', 'gold', 'whitesmoke', 'lightgray', 'dimgray' ], default: 'unset', }, startbackground: { label: 'transitionstart background', labelPos: 'left', type: 'select', options: [ 'unset', 'black', 'blue', 'green', 'aqua', 'red', 'purple', 'yellow', 'white', 'gray', 'lightskyblue', 'lightgreen', 'orangered', 'pink', 'gold', 'whitesmoke', 'lightgray', 'dimgray' ], default: 'unset', }, cancelcolor: { label: 'transitioncancel color', labelPos: 'left', type: 'select', options: [ 'unset', 'black', 'blue', 'green', 'aqua', 'red', 'purple', 'yellow', 'white', 'gray', 'lightskyblue', 'lightgreen', 'orangered', 'pink', 'gold', 'whitesmoke', 'lightgray', 'dimgray' ], default: 'unset', }, cancelbackground: { label: 'transitioncancel background', labelPos: 'left', type: 'select', options: [ 'unset', 'black', 'blue', 'green', 'aqua', 'red', 'purple', 'yellow', 'white', 'gray', 'lightskyblue', 'lightgreen', 'orangered', 'pink', 'gold', 'whitesmoke', 'lightgray', 'dimgray' ], default: 'unset', }, endcolor: { label: 'transitionend color', labelPos: 'left', type: 'select', options: [ 'unset', 'black', 'blue', 'green', 'aqua', 'red', 'purple', 'yellow', 'white', 'gray', 'lightskyblue', 'lightgreen', 'orangered', 'pink', 'gold', 'whitesmoke', 'lightgray', 'dimgray' ], default: 'unset', }, endbackground: { label: 'transitionend background', labelPos: 'left', type: 'select', options: [ 'unset', 'black', 'blue', 'green', 'aqua', 'red', 'purple', 'yellow', 'white', 'gray', 'lightskyblue', 'lightgreen', 'orangered', 'pink', 'gold', 'whitesmoke', 'lightgray', 'dimgray' ], default: 'unset', }, url: { section: ['', 'Support'], label: 'almaceleste.github.io', type: 'button', click: () => { GM_openInTab('https://almaceleste.github.io', { active: true, insert: true, setParent: true }); } }, }, css: windowcss, events: { save: function() { GM_config.close(); } }, }); function log(type, event){ const color = GM_config.get(`${type}color`); const background = GM_config.get(`${type}background`); const style = ` color: ${color}; background-color: ${background}; font-style: ${GM_config.get('italic') ? 'italic' : 'unset'}; font-weight: ${GM_config.get('bold') ? 'bold' : 'unset'}; `; let property = GM_config.get('property'); if (property != 'none') { property = event.originalEvent[property]; } else { property = ''; } switch (GM_config.get('method')) { case 'debug': console.debug(`%ctransition${type}:`, style, property, event.originalEvent); break; case 'dir': console.log(`%ctransition${type}:`, style, property); console.dir(event.originalEvent); break; case 'dirxml': console.log(`%ctransition${type}:`, style, property); console.dirxml(event.originalEvent); break; case 'error': console.error(`%ctransition${type}:`, style, property, event.originalEvent); break; case 'info': console.info(`%ctransition${type}:`, style, property, event.originalEvent); break; case 'log': console.log(`%ctransition${type}:`, style, property, event.originalEvent); break; case 'warn': console.warn(`%ctransition${type}:`, style, property, event.originalEvent); break; default: console.log(`%ctransition${type}:`, style, property, event.originalEvent); break; } } (function() { 'use strict'; $(document).ready(() => { $(window).on({ transitionrun: (e) => { if (GM_config.get('run')) { log('run', e); } }, transitionstart: (e) => { if (GM_config.get('start')) { log('start', e); } }, transitioncancel: (e) => { if (GM_config.get('cancel')) { log('cancel', e); } }, transitionend: (e) => { if (GM_config.get('end')) { log('end', e); } }, }); }); })();