您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
View editorials of all problems in one page.
当前为
- // ==UserScript==
- // @name AtCoder Editorial Collector
- // @name:ja AtCoder Editorial Collector
- // @description View editorials of all problems in one page.
- // @description:ja 全問題の解説を1ページに表示します。
- // @version 1.2.1
- // @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. 🐻`)
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址