您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
View all editorials in one page.
当前为
// ==UserScript== // @name AtCoder Editorial Collector // @description View all editorials in one page. // @version 1.2 // @match https://atcoder.jp/contests/*/editorial // @match https://atcoder.jp/contests/*/editorial?* // @grant GM_addStyle // @namespace https://github.com/w0mbat-kyopro/user-scripts // @author w0mbat // ==/UserScript== (async function () { 'use strict'; console.log(`🐻 "AtCoder Editorial Collector" start execution. 🐻`) async function addScript(src, onload = () => { }) { return new Promise((resolve) => { const script = document.createElement("script"); script.type = "text/javascript"; script.src = src; script.onload = () => { onload(); resolve(); }; document.getElementsByTagName("head")[0].appendChild(script); }); } async function loadMathjax() { await addScript("https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML", () => { MathJax.Hub.Config({ messageStyle: "none", tex2jax: { skipTags: ["script", "noscript", "style", "textarea", "code"], inlineMath: [['$', '$'], ['\\(', '\\)']] } }); }); } async function loadPrettifier() { await addScript("https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"); } async function getEditorial(link) { return new Promise((resolve) => { const xhr = new XMLHttpRequest() xhr.responseType = "document"; xhr.onload = (response) => { const dom = response.target.responseXML; const editorialDom = dom.querySelector("#main-container > div.row > div:nth-child(2) > div:nth-child(3)"); editorialDom && link.parentNode.appendChild(editorialDom); resolve(); } xhr.open("GET", link.href); xhr.send(); }); } async function getAllEditorials() { return Promise.all(Array.prototype.filter.call(document.getElementsByTagName('a'), e => e.href.match(/\/editorial\//)) .map(e => getEditorial(e))); } GM_addStyle("pre code { tab-size: 4; }"); await getAllEditorials(); await loadMathjax(); await loadPrettifier(); console.log(`🐻 "AtCoder Editorial Collector" end execution. 🐻`) })();