Greasy Fork is available in English.
自定义你的网页鼠标样式,在www.cursor.cc安装新的鼠标样式
// ==UserScript== // @name 网页鼠标自定义 // @namespace http://tampermonkey.net/MyCursor-MyStyle // @version 2020.08.06.2 // @description:zh-CN 自定义你的网页鼠标样式,在www.cursor.cc安装新的鼠标样式 // @description:zh-TW 自定義你的網頁滑鼠樣式,在www.cursor.cc安裝新的滑鼠樣式 // @description:en-US Customize your mouse style, install various different mouse styles on www.cursor.cc // @author PY-DNG // @include * // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_getValue // @description 自定义你的网页鼠标样式,在www.cursor.cc安装新的鼠标样式 // ==/UserScript== (function() { 'use strict'; //样式处理部分 let AddStyle = function(NewStyle, SytleId){ if(SytleId && document.getElementById(SytleId)){ document.getElementById(SytleId).remove(); } let NewStyleElement = document.createElement("style"); NewStyleElement.type = "text/css"; if(SytleId){NewStyleElement.id = SytleId;}; NewStyleElement.appendChild(document.createTextNode(NewStyle)); let HeadElement = document.getElementsByTagName("head")[0]; HeadElement.appendChild(NewStyleElement); }; //当前域名 let site = window.location.href.replace(/https?:\/\//, ''); site = site.substring(0, site.indexOf('/')); //默认鼠标样式 let defaultCursor = "body { cursor: url('data:image/x-icon;base64,AAACAAEAICAAAAAAAACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAABgAAAAcAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6PAX/ejwF/wAAAAAAAAAAejwF/3o8Bf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAejwF/72de/+9nXv/ejwF/3o8Bf+1cWn/tXFp/3o8Bf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6PAX/vZ17///jxP+9nXv/vZ17/72de/+1cWn/ejwF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHo8Bf+9nXv/vZ17/72de/+9nXv/vZ17/7Vxaf96PAX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6PAX/2cvK/72de/+9nXv/vZ17/72de/+9nXv//+PE/7Vxaf96PAX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHo8Bf/Zy8r/2cvK/72de///48T/vZ17/72de/+9nXv/tXFp/3o8Bf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHo8Bf96PAX/ejwF/72de/+9nXv/ejwF/3o8Bf96PAX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6PAX/2cvK/72de/96PAX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6PAX/ejwF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAejwF/3o8Bf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6PAX/tXFp/3o8Bf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHo8Bf+9nXv/tXFp/3o8Bf96PAX/ejwF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAejwF/72de///48T/tXFp/7Vxaf96PAX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6PAX/vZ17/72de/+1cWn/ejwF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHo8Bf//48T/vZ17/3o8Bf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAejwF/72de/96PAX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6PAX/ejwF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHo8Bf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////////////////////////////////////////////////////////5n///8A////AP///wD///4Af//+AH///wD////D////5///8/////H////wP///8D////B////w////8f////P////3////8='), auto; }"; if(GM_getValue('default', '') === '') {GM_setValue('default', defaultCursor); }; //当前鼠标样式 let myCursor = GM_getValue(site, GM_getValue('default', '')); //忽略的域名 let ignoreList = GM_getValue('ignoreList', ''); //样式的Element.id let cursorId = 'mycursor'; //样式应用函数 let applyCursor = function() { //如果忽略此域名就不添加鼠标样式 if(ignoreList.indexOf(site) !== -1){return; }; /* 已弃用,换用下面所写的优先级更高的内联样式表 ------------------------------------- //去除原有鼠标样式定义 document.querySelector('body').style.cursor = ''; //添加自定义鼠标样式 AddStyle(myCursor, cursorId); */ //内联样式文本 let insideCursorText = myCursor.replace(/body *{ *cursor *: */, '').replace(/ *; *}/, '') if(site === 'www.baidu.com') { //百度首页有特殊处理过,需要专门适配 document.getElementById('wrapper').style.cursor = insideCursorText; document.getElementById('head').style.cursor = insideCursorText; document.getElementById('s_tab').style.cursor = insideCursorText; document.getElementById('wrapper_wrapper').style.cursor = insideCursorText; } else { //无特殊情况,直接在body上设置.style.cursor内联样式 document.querySelector('body').style.cursor = insideCursorText; } }; window.addEventListener('load', applyCursor); //用户交互部分 let lang = navigator.appName=="Netscape"?navigator.language:navigator.userLanguage; let menu={}; switch (lang){ case "zh-CN": menu={ specific: "为此网站自定义鼠标样式", on_off: "", //------------display------------ ignore: "忽略此网站", apply: "在此网站上启用自定义鼠标样式", enterCSS: "请输入新的CSS内容:" }; break; case "zh-TW": menu={ specific: "為此網站自定義滑鼠樣式", on_off: "", //------------display------------ ignore: "忽略此網站", apply: "在此網站上啟用自定義滑鼠樣式", enterCSS: "請輸入新的CSS內容:" }; break; default: menu={ specific: "Set Another Cursor for this site only", on_off: "", //------------display------------ ignore: "Ignore this site", apply: "Apply Cursor on this site", enterCSS: "Enter new CSS style: " }; break; } if(ignoreList.indexOf(site) === -1) { menu.on_off = menu.ignore; } else { menu.on_off = menu.apply; } //自定义鼠标样式函数 let setCursor = function() { myCursor = prompt(menu.enterCSS, myCursor); GM_setValue('default', myCursor); applyCursor(); }; //是否忽略此网站函数 let on_off = function() { if(ignoreList.indexOf(site) === -1) { ignoreList = ignoreList + '|' + site; GM_setValue('ignoreList', ignoreList); document.getElementById(cursorId).parentElement.removeChild(document.getElementById(cursorId)); } else { ignoreList = ignoreList.replace('|' + site, ''); GM_setValue('ignoreList', ignoreList); applyCursor(); } }; //为当前网站单独定义鼠标样式 let specific = function() { myCursor = prompt(menu.enterCSS, myCursor); GM_setValue(site, myCursor); applyCursor(); }; GM_registerMenuCommand(menu.specific, specific); GM_registerMenuCommand(menu.on_off, on_off); //www.cursor.cc添加安装功能 if(site === 'www.cursor.cc') { //添加安装按钮(PS: 白嫖别人写好的样式果然就是爽!doge) let b = document.getElementById('download_copy_form').parentElement.children[2]; let installButton = document.createElement('a'); installButton.className = b.className; installButton.style.cssText = b.style.cssText; installButton.style.cursor = 'pointer'; installButton.textContent = '------ Install ------'; installButton.id = 'installer' b.parentElement.insertBefore(installButton, b.parentElement.children[3]); installButton.addEventListener('click', function() { /*let all = document.getElementsByClassName('howto')[1].children[1].textContent; myCursor = all.replace('<style type=\"text/css\">', '').replace('</style>', '');*/ myCursor = 'body { cursor: ' + document.getElementsByClassName('icon_row')[0].style.cursor + '; }'; console.log('myCursor = "' + myCursor + '"'); GM_setValue('default', myCursor); applyCursor(); }); } })();