Greasy Fork is available in English.
美化AcWing界面
当前为
// ==UserScript==
// @name AcWing美化
// @version 0.25
// @description 美化AcWing界面
// @author 北极小狐
// @match https://www.acwing.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=acwing.com
// @grant none
// @license MIT
// @namespace http://greasyfork.icu/users/747162
// ==/UserScript==
// 调整样式
function loadCssCode(code){
var style = document.createElement('style');
style.type = 'text/css';
style.rel = 'stylesheet';
style.appendChild(document.createTextNode(code));
var head = document.getElementsByTagName('head')[0];
head.appendChild(style);
}
loadCssCode(`
/* 宽度自适应 */
.container {
width: auto !important;
}
/* 去除没用的图标 */
.file-explorer-main-field-item.file-explorer-main-field-item-desktop {
width: 0px;
height: 0px;
overflow: hidden;
}
/* 背景bing壁纸 */
#acwing_body {
background: white url(https://bingw.jasonzeng.dev) fixed !important;
}
/* 其他 */
.fs-gui-taskbar {
height: 3.5vh !important;
background-color: #dde1e5 !important;
}
.fs-gui-taskbar-widgets-apps-item > img {
height: 2.2vh !important;
width: 2.2vh !important;
margin: 0.5vh 0.5vh 0.5vh 0.5vh !important;
}
.fs-gui-taskbar-widgets-clock{
width: 0px !important;
height: 0px !important;
overflow: hidden !important;
}
.fs-gui-taskbar-widgets-apps-item {
margin-right: 2vh !important;
}
#fs-gui-taskbar-search-field {
font-size: 1.3vh !important;
}
.fs-gui-taskbar-search-icon {
font-size: 1.6vh !important;
top: 0.95vh !important;
left: 4.3vh !important;
}
footer#acwing_footer .copyright {
color: #fff;
}
footer#acwing_footer .copyright a, .links a, footer#acwing_footer .container {
color: #fff;
}
.fs-gui-taskbar-begin {
height: 3vh !important;
width: 3vh !important;
margin: 0.2vh !important;
border-radius: 60%;
background-color: #fffefe80 !important;
}
button.fs-gui-taskbar-begin.pull-left.btn.btn-default img {
width: 83% !important;
}
#fs-gui-taskbar-search-field {
height: 90% !important;
margin: 0.15vh;
border-radius: 100px;
border-width: 0.2vh;
border-style: solid;
border-color: #c7d2dd;
}
#fs-gui-taskbar-search-field:focus-visible {
border-width: 0.2vh;
border-style: solid;
border-color: #8bb2d9;
outline: -webkit-focus-ring-color auto 0px;
}
/* 复制按钮 */
pre.hljs {
display: flex;
justify-content: space-between;
}
span.copy-button {
cursor: pointer;
background-color: #e6e6e6;
color: #727378;
height: 2vh;
font-size: 1.3vh;
border-radius: 0.3rem;
padding: 1px 5px;
margin: 5px;
box-shadow: 0 0 1px #0000004d;
}
span.copy-button.copied {
background-color: #07e65196;
color: #104f2b;
}
`);
document.addEventListener('DOMContentLoaded', function() {
// 让某些链接在新窗口打开
var regExps = [
/常用代码模板/,
/example/,
/test/
];
var aTags = document.getElementsByTagName('a');
for (var i = 0; i < aTags.length; i++) {
for (var j = 0; j < regExps.length; j++) {
if (regExps[j].test(aTags[i].textContent)) {
aTags[i].setAttribute('target', '_blank');
break;
}
}
}
// 自动恢复进度条
setTimeout(function() {
try {
document.querySelector('.play-jump').click();
} catch (error) {
// do nothing
}
}, 3000);
// 复制按钮
// 获取所有 .hljs 中的代码块
const codeBlocks = document.querySelectorAll('.hljs code');
// 循环遍历每个代码块
codeBlocks.forEach(codeBlock => {
// 创建一个 span 元素,并设置样式
const beforeButton = document.createElement('span');
beforeButton.textContent = "Copy";
beforeButton.className = 'copy-button';
// 在代码块前面插入按钮
codeBlock.parentNode.insertBefore(beforeButton, codeBlock.nextSibling);
// 为按钮添加点击事件
beforeButton.addEventListener('click', event => {
// 创建临时文本域
const textarea = document.createElement('textarea');
textarea.value = codeBlock.textContent.replace(/\n+$/, '');
document.body.appendChild(textarea);
textarea.select();
document.execCommand('copy');
document.body.removeChild(textarea);
// 更新复制按钮文本
beforeButton.classList.add('copied');
beforeButton.textContent = "Copied";
setTimeout(() => {
beforeButton.classList.remove('copied');
beforeButton.textContent = "Copy";
}, 2000);
}, false);
});
// 移除广告元素
let ADidADList = ["1024-activity","test"];
ADtraverseDom(document.body);
function ADtraverseDom(node) {
if (node.nodeType === Node.ELEMENT_NODE && ADidADList.includes(node.id)) {
node.parentNode.removeChild(node);
} else {
for (let i = 0; i < node.childNodes.length; i++) {
ADtraverseDom(node.childNodes[i]);
}
}
}
});