您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Include chat in Lichess TV
// ==UserScript== // @name Lichess Lounger // @namespace https://lichess.org/@/Hedgehogs4Me // @version 0.3 // @description Include chat in Lichess TV // @author Hedgehogs4Me // @include https://*lichess.org/* // @run-at document-idle // @grant none // ==/UserScript== (function() { 'use strict'; function LoungeBug(message, severity) { //Severity 2 is a real bug, severity 1 is a fatal user thing, severity 0 is a thing I put in just in case and would be non-fatal I guess. var userWarning = document.createElement("P"); userWarning.appendChild(document.createTextNode("LOUNGER ERROR: " + message)); userWarning.style.color=severity===2?"red":severity===1?"orange":severity===0?"teal":"purple"; //document.body.appendChild(userWarning); document.body.insertBefore(userWarning, document.getElementsByClassName("content")[0]); } //Delayed severity 1 errors. I never said any of this made any organizational sense. function severity1() { if(boardArray[0].style.height!==""){ failed = true; LoungeBug("Lounger isn't working because your board is not the minimum size.", 1); } if(failed===true){ LoungeBug("Just thought, you know, I'd let you know. Sorry 'bout that.", 1); document.getElementsByClassName("lichess_ground")[0].removeChild(document.getElementById("chat_page")); //It's not a problem anyway but just in case remove the thing that doesn't work. return; } } var failed = false; var boardArray = document.getElementsByClassName("cg-board-wrap"); var h = 512; //I've left the former definitions in for archival/curiousity purposes, but the reason this really must be 512 is that there isn't any point in it being anything else. // You see, not only does resizing happen *after* the page has loaded, but also, if any board resizing has been done, the board suddenly takes precedence over the chat in small // windows! This could *maybe* be worked around by making it a large iframe and covering it up, but then I would have to make the entire thing bigger, and figure out how everything // fits together, and then... well, look, I'm not doing it. I made this because I'm so lazy I want to sit back and watch Lichess TV all day and not even have to switch pages to // comment, so clearly I'm not going to put in that work. If someone else wants to do it, though, feel free, and I'd love to see your results! if(window.self === window.top) { if(document.URL.search(/https:\/\/.+lichess\.org\/tv(\/(?!stream)|\/*$)/) != -1) { //Severity 2 if(boardArray.length===0){ failed = true; LoungeBug("Hedgehogs can't even get the board wrapper name right. It's like chemistry class all over again.", 2); } var sidebarArray = document.getElementsByClassName("lichess_ground"); if(sidebarArray.length===0){ failed = true; LoungeBug("Something something list wrapper name. Let's just call it ERROR 683A to sound good.", 2); } var analysisArray = document.getElementsByClassName("analysis"); if(analysisArray.length===0){ failed = true; LoungeBug("I don't know why the analysis button class name would be changed, but apparently it was.", 2); } if(document.getElementById("friend_box")===null){ failed = true; LoungeBug("Can't find the friend box. Literally me IRL.", 2); } if(failed===true){ LoungeBug("In other words, you should turn off this userscript.", 2); return; } //var h = (boardArray[0].style.height!=="")?parseInt(boardArray[0].style.height):512; sidebarArray[0].style.height=(h+98)+"px"; //98 px is how big the crosstable is and I want to use as much space as I can var chatFrame = document.createElement("IFRAME"); chatFrame.style.overflow="hidden"; chatFrame.style.border="none"; // chatFrame.style.height="100%"; // chatFrame.style.height=(h+98-370)+"px"; //god damn it all, none of this is working chatFrame.style.setProperty("height", (h+98-370)+"px", "important"); chatFrame.scrolling="no"; chatFrame.id="chat_page"; chatFrame.src=analysisArray[0].href.slice(0,31)+"#chat"; sidebarArray[0].appendChild(chatFrame); //setTimeout(function(){ sidebarArray[0].appendChild(chatFrame); }, 1000); //setTimeout(function(){ chatFrame.scrollLeft = 0; }, 2000); // Well, I tried. Didn't think it'd work. setTimeout(function(){ window.scrollTo(0,24);severity1(); }, 1000); //I am literally so lazy I scroll to make the full chat bit visible on my small screen } } else { if(window.top.location.href.search(/https:\/\/.+lichess\.org\/tv(\/(?!stream)|\/*$)/) != -1) { //var h = (boardArray[0].style.height!=="")?parseInt(boardArray[0].style.height):512; document.getElementById("friend_box").style.display="none"; var chat = document.getElementById("chat"); chat.style.setProperty("width", "242px", "important"); chat.style.setProperty("height", (h+98-370)+"px", "important"); //board height, plus under-thingy height, minus height of the stuff above the chat. Trust me on this one. boardArray[0].style.visibility="hidden"; //This bit scares me. //setTimeout(function(){ chat.scrollIntoView(); }, 1000); } } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址