// ==UserScript== // @name YouTube Bolder Subtitles // @name:ja YouTube Bolder Subtitles // @name:zh-CN YouTube Bolder Subtitles // @namespace knoa.jp // @description Make the subtitles bolder for better visibility on YouTube. // @description:ja YouTubeの字幕を太字にして見やすくします。 // @description:zh-CN 将YouTube上的字幕放成粗体字,让人更容易看清。 // @include https://www.youtube.com/* // @version 1.0.1 // @grant none // @downloadURL none // ==/UserScript== (function(){ const SCRIPTID = 'YouTubeBolderSubtitles'; const SCRIPTNAME = 'YouTube Bolder Subtitles'; const DEBUG = false;/* [update] 1.0.1 minor fix. [bug] [todo] [possible] 設定パネルでカスタマイズ? [research] [memo] */ if(window === top && console.time) console.time(SCRIPTID); const MS = 1, SECOND = 1000*MS, MINUTE = 60*SECOND, HOUR = 60*MINUTE, DAY = 24*HOUR, WEEK = 7*DAY, MONTH = 30*DAY, YEAR = 365*DAY; let elements = {}, flags = {}, timers = {}, sizes = {}, panels, configs; const core = { initialize: function(){ elements.html = document.documentElement; elements.html.classList.add(SCRIPTID); core.addStyle('style'); }, addStyle: function(name = 'style', d = document){ if(html[name] === undefined) return; if(!d.head) return d.addEventListener('load', (e) => core.addStyle(name, d), {once: true}); let style = createElement(html[name]()), id = SCRIPTID + '-' + name; style.id = id; Array.from(d.styleSheets).forEach(s => s.ownerNode.id === id && d.head.removeChild(s.ownerNode)); d.head.appendChild(style); }, }; const html = { style: () => ` `, }; const setTimeout = window.setTimeout.bind(window), clearTimeout = window.clearTimeout.bind(window), setInterval = window.setInterval.bind(window), clearInterval = window.clearInterval.bind(window), requestAnimationFrame = window.requestAnimationFrame.bind(window), requestIdleCallback = window.requestIdleCallback.bind(window); const alert = window.alert.bind(window), confirm = window.confirm.bind(window), prompt = window.prompt.bind(window), getComputedStyle = window.getComputedStyle.bind(window), fetch = window.fetch.bind(window); if(!('isConnected' in Node.prototype)) Object.defineProperty(Node.prototype, 'isConnected', {get: function(){return document.contains(this)}}); const createElement = function(html = '
'){ let outer = document.createElement('div'); outer.insertAdjacentHTML('afterbegin', html); return outer.firstElementChild; }; core.initialize(); if(window === top && console.timeEnd) console.timeEnd(SCRIPTID); })();