您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
// ==UserScript== // @name READTHEDOCS.IO // @namespace http://tampermonkey.net/ // @version 1.4 // @description try to take over the world! // @author You // @match https://geotrellis.readthedocs.io/* // @match https://scala-slick.org/doc/*/* // @match https://www.geomesa.org/documentation/tutorials/* // @match http://www.sunibas.cn/pages/geotrellis-docs/* // @grant GM_setValue // @grant GM_getValue // ==/UserScript== (function() { 'use strict'; //const $supWindow = window; window.docExpand = "docExpand"; window.docSidebarLoc = "docSidebarLoc"; var panelDefaultSetting = { name: "panelDefaultSetting", panelOpacity: 80, sidebarOpacity: 80, leftColor: "#a7e0e7", rightColor: "#79c9f9", docScala: 100, }; var setLeftContentColor = function() {}; var setRightContentColor = function() {}; var getLeftContentDom = function() {}; var getRightContentDom = function() {}; window.panel = { color: 'fixColor', loc: 'fixLoc', sidebar: 'mySidebar', }; window.onload = function() { var content = jQuery('.wy-nav-content'); if (content.length) { geotrellis(); return; } if (location.host == "scala-slick.org") { slick(); } addSetting(); } function addSetting() { var settingBtn = jQuery(`<div style="position: fixed;top: 0;left: 0; z-index: 1000;border: 50px solid;border-top-color: #3F51B5;max-width:100px;max-height:100px; border-bottom-color: #ffff0000;border-left-color: #9C27B0;cursor: pointer; border-right-color: #0000ff00;"></div>`); jQuery('body').append(settingBtn); var settingPanel = jQuery(`<div style="position: fixed;display:none; top: 20%;padding:20px;left: 20%;color:white; width: 60%;height: 60%;z-index: 1000;background: black; "><div style="width: 100%;line-height: 20px;cursor: pointer;" tar="close">关闭</div></div>`); function updateValue(name,value) { panelDefaultSetting[name] = value; setContent(panelDefaultSetting.name,panelDefaultSetting); } function addRange(label,defaultValue,name,onchange,max,min,step) { var range = jQuery(`<div style="width: 100%;line-height: 20px;"> <lable style="display: inline-block;width: 20%;text-align: center;">${label}</lable> <input type="range" style="width: 70%;display:inline-block;" min="${min || 30}" max="${max || 100}" step="${step || 1}"></div>`); var inp = range.find('input'); inp.val(defaultValue || 100); inp.on('change',function(e) { onchange(e.target.value); updateValue(name,e.target.value); }); onchange(defaultValue || 100); return range; } function addColor(label,defaultValue,name,onchange) { var range = jQuery(`<div style="width: 100%;line-height: 20px;"> <lable style="display: inline-block;width: 20%;text-align: center;">${label}</lable> <input type="color" style="width: 70%;display:inline-block;"></div>`); var inp = range.find('input'); inp.val(defaultValue); inp.on('change',function(e) { onchange(e.target.value); updateValue(name,e.target.value); }); onchange(defaultValue); return range; } jQuery('body').append(settingPanel); panelDefaultSetting = getContent(panelDefaultSetting.name,panelDefaultSetting); settingPanel.append(addRange("面板透明度",panelDefaultSetting.panelOpacity,"panelOpacity",function (val) { settingPanel.css({opacity: val / 100}); })); settingPanel.append(addRange("菜单透明度",panelDefaultSetting.sidebarOpacity,"sidebarOpacity",function (val) { jQuery(`#${panel.sidebar}`).css({opacity: val / 100}); })); settingPanel.append(addColor("左边文档颜色",panelDefaultSetting.leftColor,"leftColor",function (val) { setLeftContentColor(val); })); settingPanel.append(addColor("右边文档颜色",panelDefaultSetting.rightColor,"rightColor",function (val) { setRightContentColor(val); })); settingPanel.append(addRange("缩放文档",panelDefaultSetting.docScala,"docScala",function (val) { getLeftContentDom().style.transformOrigin = "0 0"; getLeftContentDom().style.transform = `scale(${val / 100})`; getRightContentDom().style.transformOrigin = "0 0"; var offsetX = - getLeftContentDom().offsetWidth * (100 - val) / 100; getRightContentDom().style.transform = `scale(${val / 100}) translate(${offsetX}px, 0px)`; console.log(val); },150,50,10)); settingPanel.find('[tar="close"]').on("click",function () { settingPanel.css({display: 'none'}); }); settingBtn.on('click',function() { settingPanel.css({display:'block'}); }); } function slick() { function slickOld() { var content = jQuery('.content'); jQuery('.content-wrapper').css({ padding: '0', background: 'unset' }); var sidebar = jQuery('.sidebar'); sidebar.remove(); content.css({ margin:"0 20px", width: "auto" }); sidebarSetting(sidebar); jQuery('.clearer').css({display:'none'}); var doc = jQuery('.document'); doc.css({padding:'0 0px 0 15px'}); return {content,doc,iframeStyle:"", left:`<div class="document">`,right:`</div`}; } function slickNew() { let main = jQuery('main'); let content = main.parent(); main.css({ "max-width": "800px",display: "inline-block",position: "absolute" }); content.parent().css({ margin:0,padding:0,"max-width":"unset" }); let sidebar = jQuery('[data-sticky-container]'); sidebar.remove(); sidebar[0].style.minWidth = "250px"; sidebarSetting(jQuery(`<div>${sidebar[0].children[0].innerHTML}</div>`)); return { content,doc:main,iframeStyle: `position: absolute;left: 850px;`, left: '<main class="columns large-order-2 sections">', right: '</main>' }; } var content = jQuery('.content'); var dom = {}; if (content.length === 0) { dom = slickNew(); } else { dom = slickOld(); } dom.content.append(jQuery(`<iframe id="copy" style="${dom.iframeStyle}"></iframe>`)); copyToIframe(copy,dom.doc[0],dom.left,dom.right); copy.style.border = "none"; setTimeout(function() { copy.contentDocument.body.style.padding = "0 10px"; copy.contentDocument.body.children[0].style.width = (copy.contentWindow.innerWidth - 20) + "px"; }); } function geotrellis() { var content = jQuery('.wy-nav-content-wrap'); var sidebar = jQuery('.wy-nav-side'); jQuery('.wy-nav-content-wrap').css({margin:0}); content.css({ margin:"0" }); sidebar.remove(); sidebar.css({ position: "unset", "overflow-y": "scroll" }); sidebarSetting(sidebar); var doc = jQuery('.wy-nav-content'); doc.css({float:"left"}); content.append(jQuery('<iframe id="copyDoc"></iframe>')); copyToIframe(copyDoc,doc[0],`<div class="wy-nav-content">`,`</div`); copyDoc.style.border = "none"; setTimeout(function() { copyDoc.contentDocument.body.style.padding = "0 10px"; copyDoc.contentDocument.body.children[0].style.width = (copyDoc.contentWindow.innerWidth - 20) + "px"; }); } function sidebarSetting(sidebar) { function resize() { var height = window.innerHeight * 0.9; if (sidebar.height() <= window.innerHeight * 0.9) { sidebar.css({ height: "auto", "overflow-y": "unset" }); } else { sidebar.css({ height: height + "px", "overflow-y": "scroll" }); } }; var newSidebar = jQuery(`<div id="${panel.sidebar}"> <div style="cursor: pointer;user-select: none;padding: 5px;background: darkseagreen;"> <div style="display: inline;padding-right:20px" tar="expandSide">展开</div> <div style="display: inline;" tar="dExpandSide">收起</div> <div style="display: inline;" tar="dragTo">点我拖动</div> </div></div>`); jQuery('body').append(newSidebar); newSidebar.append(sidebar); var loc = getContent(docSidebarLoc,{top:20,right:10}); newSidebar.css({ position: "fixed", "z-index": 100000, background: "#82c8ff", padding: "20px", top: loc.top + 'px', right: loc.right + 'px', }); var res = window.onresize || (() => {}); window.onresize = function() { res(); resize(); }; resize(); window.expandSide = function() { sidebar.css({display:'block'}); setContent(docExpand,{ex:true}); }; window.dExpandSide = function() { sidebar.css({display:'none'}); setContent(docExpand,{ex:false}); }; newSidebar.find('[tar="expandSide"]').on('click',expandSide); newSidebar.find('[tar="dExpandSide"]').on('click',dExpandSide); var ex = getContent(docExpand,{ex:false}).ex; if (ex) { expandSide(); } else { dExpandSide(); } // 处理拖动 newSidebar.find('[tar="dragTo"]').hover(function(){ $(this).css({"background": "#82c8ff", padding: "5px", "line-height": "16px", "box-sizing": "border-box" });//hover时效果 },function(){ $(this).css({"background": "unset", padding: "0", "line-height": "unset", "box-sizing": "unset" });//hover时效果 }); let dragObj = { drag: false, fromX: 0, fromY: 0, top: loc.top, right: loc.right }; newSidebar.find('[tar="dragTo"]').on("mousedown",function(e) { dragObj.drag = true; dragObj.fromX = e.clientX; dragObj.fromY = e.clientY; }).on("mousemove",function(e) { if (!dragObj.drag) return; var detaX = dragObj.fromX - e.clientX; // 左 正 var detaY = dragObj.fromY - e.clientY; // 下 负 // 改变 坐标位置 dragObj.right += detaX; dragObj.top -= detaY; newSidebar.css({ right: dragObj.right + "px", top: dragObj.top + "px", }); dragObj.fromX = e.clientX; dragObj.fromY = e.clientY; }).on("mouseup",function() { dragObj.drag = false; setContent(docSidebarLoc,{top:dragObj.top,right:dragObj.right}); }); } function wy_nav_content() { var content = jQuery('.wy-nav-content'); var parentDiv = content.parent(); parentDiv[0].style.background = "#fff"; content[0].style.float = 'left'; content[0].style.background = 'darkkhaki'; parentDiv.append(jQuery('<iframe id="copy"></iframe>')); copyToIframe(copy,content[0],`<div class="wy-nav-content" style="float: left;">`,`</div>`); } function copyToIframe(copyIfr,copyEle,outerLeft,outerRight) { setTimeout(function() { setTimeout(function(){ var ls = document.getElementsByTagName('head')[0].getElementsByTagName('link'); for (var i = 0;i < ls.length;i++) { if (ls[i].getAttribute('rel') == "stylesheet") { copyIfr.contentWindow.document.getElementsByTagName('body')[0].innerHTML += `<link rel="stylesheet" href="${ls[i].href}" type="text/css">`; } } },500); copyIfr.contentWindow.document.getElementsByTagName('body')[0].innerHTML = outerLeft + copyEle.innerHTML + outerRight; copyIfr.style.height = copyEle.clientHeight + "px"; copyIfr.style.width = (copyEle.clientWidth + 50) + "px"; }); setLeftContentColor = function(color) { copyEle.style.background = color; }; setRightContentColor = function(color) { copyIfr.contentDocument.body.style.background = color; }; getLeftContentDom = function() { return copyEle; } getRightContentDom = function() { return copyIfr; } // 上下运动 setTimeout(function() { jQuery('body').append(jQuery(` <div id="${panel.loc}" style="position: fixed;right: 20px;top: 50%;font-size: xx-large;cursor: pointer;user-select: none;"> <div id="justLocUp" style="background: cadetblue;border-radius: 10px;padding: 5px;">上</div> <div id="closeFixLoc" style="margin-top: 5px;background: cadetblue;border-radius: 10px;padding: 5px;">关</div> <div id="justLocDown" style="margin-top: 5px;background: cadetblue;border-radius: 10px;padding: 5px;">下</div> </div>`)); jQuery("#closeFixLoc").on("click",function() { jQuery("#fixLoc")[0].style.display = "none"; }); let currentLoc = 0; let justLoc = function(tar) { let cloc = currentLoc + tar * 50; if (cloc < 0) { return; } else { copyEle.style.marginTop = cloc + "px" currentLoc = cloc; } } jQuery("#justLocUp").on("click",function() { justLoc(-1); }); jQuery("#justLocDown").on("click",function() { justLoc(1); }); }); } function getContent(name,defaultValue) { var value = GM_getValue(name,JSON.stringify(defaultValue)); return JSON.parse(value); } function setContent(name,value) { GM_setValue(name,JSON.stringify(value)); } // Your code here... })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址