您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
油管字幕在视频上,看起来不舒服,挪到视频下方了。字幕插件地址 https://chrome.google.com/webstore/detail/language-reactor/hoombieeljmmljlkjmnheibnpciblicm
// ==UserScript== // @name 油管字幕放到视频下方 // @namespace 0xFF336699 // @version 0.1.1 // @description 油管字幕在视频上,看起来不舒服,挪到视频下方了。字幕插件地址 https://chrome.google.com/webstore/detail/language-reactor/hoombieeljmmljlkjmnheibnpciblicm // @author You // @match https://www.youtube.com/* // @match https://www.youtube.com // @run-at document-start // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @require https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js // @grant unsafeWindow // @license GPL-3.0 License // ==/UserScript== (function() { 'use strict'; // Your code here... let changed = false; let outerHtml; let root; let bottomParent; let caption; later(); function later(){ setTimeout(()=>{ checkCaption(); }, 100 * 3); } function checkCaption(){ if(changed)return; root = document.querySelector("#primary-inner"); if(!root)return later(); //const uncle = document.querySelector("#primary-inner").querySelector("#info"); var uncle = document.querySelector("#primary-inner").querySelector("#playerclarify-box"); var player = document.querySelector("#primary-inner").querySelector("#player"); //console.log('uncle is', uncle); //console.log('player is', player); uncle = player if(!uncle)return later(); caption = document.querySelector("#lln-bottom-panel"); if(!caption)return later(); if(!outerHtml){ var br = document.createElement('br'); br.setAttribute( 'style', 'background-color:"#FFFFFF";height:"1px";width:"100%";', ) //player.parentNode.insertBefore(br, player.nextSibling); //player.appendChild(br); outerHtml = caption.interHTML; } const content = document.querySelector(".lln-youtube .lln-bottom-panel .lln-subs-wrap"); if(!content)return later(); const sub = document.querySelector(".lln-bottom-panel #lln-main-subs"); if(!sub)return later(); const subWrap = document.querySelector(".lln-bottom-panel .lln-subs-wrap"); if(!subWrap)return later(); const youtubebottommain = document.querySelector(".lln-youtube .lln-bottom-panel #lln-main-subs"); if(!youtubebottommain)return later(); const adj = document.querySelector(".lln-bottom-panel .lln-subs-font-adjust"); if(!adj)return later(); adj.setAttribute('style', 'padding-top:-15px'); youtubebottommain.setAttribute('style', 'justify-content:flex-start'); sub.setAttribute('style', 'justify-content:flex-start'); document.querySelector("#lln-sub-view-wrap").parentElement.removeChild(document.querySelector("#lln-sub-view-wrap")); subWrap.setAttribute('style', 'padding-left: 20px;padding-right: 20px'); content.setAttribute('style', 'padding-top:1px'); caption.setAttribute('style', 'position:static;background-color:#6F6F6F;height:16rem'); //root.insertBefore(caption,uncle); bottomParent = uncle.parentNode; //bottomParent.insertBefore(caption,uncle); bottomParent.insertBefore(caption,uncle.nextSibling); changed = true; console.log('changed'); } function toFull(){ var n = document.createElement("div"); n.innerHTML = outerHtml; if(caption.parentNode == bottomParent){ bottomParent.removeChild(caption); } root.appendChild(n); } document.addEventListener("fullscreenchange", function() { if(document.fullscreen){ toFull(); }else{ changed = false; checkCaption(); } }); addWordMouseListner(); function addWordMouseListner(){ $(document).on("click", "span.lln-word.lln-hover-tooltip.top", function(e){ if(isFullScreen())return; var word = e.target.innerText; var arr = word.split(/[\s\n]/); word = arr[arr.length-1]; console.log('word is', word); var reg = /[^\x00-\x7F]+/ if(reg.test(word))return; if(!word)return; var url = `https://dictionary.cambridge.org/dictionary/english-chinese-simplified/` + word; url = `https://www.bing.com/dict/search?q=` + word; var win = window.open(url, "Dictionary", "width=800,height=2090"); //let div = document.getElementById('div'); //let selection = window.getSelection(); //let range = document.createRange(); //range.selectNode(e.target); //selection.removeAllRanges(); //selection.addRange(range); //selectElement($(e.currentTarget)[0]); setTimeout(function(){ var evt = document.createEvent("MouseEvents"); // evt.initMouseEvent("click", true, true, document, 0, 0, 0, 80, 20, false, false, false, false, 0, null); evt.initMouseEvent("mouseup", true, true); // var bl = document.dispatchEvent(evt); // console.log('bl is', bl, window.getSelection().toString().trim(),3); },50); }); } function isFullScreen() { return !! ( document.fullscreen || document.mozFullScreen || document.webkitIsFullScreen || document.webkitFullScreen || document.msFullScreen ); } // 窗口的大小和在屏幕中的位置,具体可以根据自己的显示器调整。 let wo = window.open; window.open = open; let win function open(){ //if(arguments[0].indexOf('https://dictionary.cambridge.org/dictionary') == -1){ //return wo.apply(window, arguments); //} console.log('win open', arguments); if(arguments[0].indexOf('youtube.com') > -1){ return wo.apply(window, arguments); } arguments[2] = 'width=800,height=2090'; var w; try{ w = wo.apply(window, arguments); if(w){ win = w win.moveTo(3060, 0); } }catch(e){ } return w; } window.onbeforeunload = function(){ if(!win)return; win.close(); } function onFullScreenClick(){ const llnCloseVV = document.querySelector("#llnCloseVV"); if(!llnCloseVV)return; var evt = document.createEvent("MouseEvents"); // evt.initMouseEvent("click", true, true, document, 0, 0, 0, 80, 20, false, false, false, false, 0, null); evt.initMouseEvent("click", true, true); var bl = llnCloseVV.dispatchEvent(evt); } document.addEventListener("fullscreenchange", function (e) { if (document.fullscreenElement) { console.log('进入全屏') onFullScreenClick(); } else { console.log('退出全屏') onFullScreenExit(); } }) function onFullScreenExit(){ const sidebar = document.querySelector(".lln-vv-toggle-in-sidebar"); if(!sidebar)return; var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", true, true); sidebar.dispatchEvent(evt); } //console.log('alert is', alert); var winAlert = window.alert; //window.alert = window.confirm = window.prompt = overrideAlert; function overrideAlert(content){ console.log('on alert', content); if(content.indexOf('查看我们的 Facebook 粉丝页以追踪最新消息') > -1){ console.log('blocked alert', content); return; } winAlert(content); } //alert('hehe'); XMLHttpRequest.prototype.myOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function () { //console.log('url is', arguments); this.myOpen.apply(this, arguments); }; function selectElement(element) { console.log('element is ', element); clearSelection(); if (window.getSelection) { var sel = window.getSelection(); sel.removeAllRanges(); var range = document.createRange(); //range.selectNodeContents(element); range.setStart(element, 0); range.setEnd(element, 1); sel.addRange(range); } else if (document.selection) { var textRange = document.body.createTextRange(); textRange.moveToElementText(element); textRange.select(); } } function clearSelection() { if (window.getSelection) { window.getSelection().removeAllRanges(); } else if (document.selection) { document.selection.empty(); } } })();