您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Mouse over videos&images to view full size
// ==UserScript== // @name Civitai - Image & Video Hover // @namespace http://tampermonkey.net/ // @version 1.0 // @description Mouse over videos&images to view full size // @author gfish // @license MIT // @match https://civitai.com/* // @require http://code.jquery.com/jquery-3.4.1.min.js // @compatible firefox // @compatible chrome // @compatible edge // ==/UserScript== (function() { document.body.insertAdjacentHTML('afterbegin', "<img id='img_hover_container' style='float:left; pointer-events:none; position:absolute; max-width:200px; overflow:hidden; z-index:9999;' src=''>") document.body.insertAdjacentHTML('afterbegin', "<video id='vid_hover_container' style='float:left; pointer-events:none; position:absolute; max-width:200px; overflow:hidden; z-index:9999; visibility:hidden;' src='' loop autoplay='true' muted='true'>") let vid = document.getElementById('vid_hover_container') let bEnter = false; let img_type = "jpg"; let mainRoutine = setInterval((e) => { [...document.getElementsByTagName('img'), ...document.getElementsByTagName('video')].forEach((el) => { if (el.xhover !== true) { el.xhover = true; el.addEventListener("mouseenter", (event) => { bEnter = true; img_type = "jpg" $("#img_hover_container").attr("src", el.currentSrc.replace("width=","original=true,width0=")) $("#vid_hover_container").css("visibility","visible") $("#vid_hover_container").attr("src", el.currentSrc.replace("width=","original=true,width0=").replace("anim=false","anim=true").replace(".jpeg",".webm")) vid.load() console.log(el.currentSrc, ' | ', vid.src) }) el.addEventListener("mouseleave", (event) => { bEnter = false; $("#img_hover_container").attr("src", "") vid.pause(); vid.removeAttribute('src'); // empty source vid.load(); }) } }); }, 100); let currentMousePos = { x: -1, y: -1 }; $(document).mousemove(function(event) { currentMousePos.x = event.pageX; currentMousePos.y = event.pageY; update_pos(); }); let mouse_offset_x = 16; let mouse_offset_x2 = 16; let mouse_offset_y = 16; let mouse_offset_y2 = 16; let mouse_side = false; function update_pos(){ //Mouse Horizontal if(currentMousePos.x > ($(window).width()/2)) { mouse_side = true; mouse_offset_x = -$("#img_hover_container").width() - 16; mouse_offset_x2 = -$("#vid_hover_container").width() - 16; $("#img_hover_container").css("max-width", currentMousePos.x - 16) $("#vid_hover_container").css("max-width", currentMousePos.x - 16) } else { mouse_side = false; mouse_offset_x = 16; mouse_offset_x2 = 16; $("#img_hover_container").css("max-width", $(window).width()-currentMousePos.x) $("#vid_hover_container").css("max-width", $(window).width()-currentMousePos.x) } //Mouse Vertical if(currentMousePos.y > ($(window).height() - $("#img_hover_container").height())) { mouse_offset_y = ($(window).height() - $("#img_hover_container").height()) + $(document).scrollTop(); } else { mouse_offset_y = currentMousePos.y + 16; } if(currentMousePos.y > ($(window).height() - $("#vid_hover_container").height())) { mouse_offset_y2 = ($(window).height() - $("#vid_hover_container").height()) + $(document).scrollTop(); } else { mouse_offset_y2 = currentMousePos.y + 16; } $("#img_hover_container").offset({ top: mouse_offset_y, left: currentMousePos.x + mouse_offset_x }); $("#vid_hover_container").offset({ top: mouse_offset_y2, left: currentMousePos.x + mouse_offset_x2 }); if (bEnter) { if (vid.src !== "" && vid.currentTime > 0) { $("#vid_hover_container").css('visibility','visible'); $("#img_hover_container").css("visibility","hidden"); } else { $("#vid_hover_container").css("visibility","hidden"); $("#img_hover_container").css("visibility","visible"); } } else { $("#vid_hover_container").css('visibility','hidden'); $("#img_hover_container").css("visibility","hidden"); } } //Update image position periodically var intervalID = setInterval(function(){update_pos();}, 100); //image type handler $("#img_hover_container").on('error', function(er) { if(img_type == "jpg") { $("#img_hover_container").attr("src", $("#img_hover_container").attr("src").replace(".jpg",".png")) img_type = "png"; } else if(img_type == "png") { $("#img_hover_container").attr("src", $("#img_hover_container").attr("src").replace(".png",".jpeg")) img_type = "jpeg"; } else if(img_type == "jpeg") { $("#img_hover_container").attr("src", $("#img_hover_container").attr("src").replace(".jpeg",".gif")) img_type = "gif"; } }) $("#vid_hover_container").on('error', function(er) { if (vid.src.includes('original=true,')) { $("#vid_hover_container").attr("src", vid.src.replace("original=true,","").replace("skip=,","skip0=")) vid.load() } }) $("#img_hover_container").css("max-height", $(window).height()) $("#vid_hover_container").css("max-height", $(window).height()) window?.navigation.addEventListener("navigate", (event) => { console.log('nav') bEnter = false; $("#img_hover_container").attr("src", "") vid.pause(); vid.removeAttribute('src'); // empty source vid.load(); }) })();