您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replace monaco to vanilla textarea.
当前为
您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
- // ==UserScript==
- // @name LeetCode Turbo
- // @description Replace monaco to vanilla textarea.
- // @namespace https://greatest.deepsurf.us/users/197529
- // @version 0.1.0
- // @author kkocdko
- // @license Unlicense
- // @match *://leetcode.cn/problems/*
- // @run-at document-start
- // ==/UserScript==
- "use strict";
- const globalThis = this.unsafeWindow || this;
- const originFetch = globalThis.fetch;
- const textarea = document.createElement("textarea");
- textarea.style =
- "font-family: monospace; height: 100%; width: 100%; padding: 6px 10px; white-space: pre; outline: none;";
- const replaceEditorTimer = setInterval(() => {
- try {
- document.querySelector("#editor").replaceWith(textarea);
- clearInterval(replaceEditorTimer);
- } catch (_) {}
- }, 500);
- globalThis.fetch = (input, init) => {
- if (input?.includes("/lc-monaco/") || input?.includes("/monaco-tm/")) {
- throw Error("Monaco editor blocked.");
- }
- if (input?.endsWith("/submit") || input?.endsWith("/submit/")) {
- init.body = JSON.stringify({
- ...JSON.parse(init.body),
- typed_code: textarea.value,
- });
- }
- return originFetch(input, init);
- };
- const titleSlug = location.href.split("/problems/")[1].split("/")[0];
- fetch("https://leetcode.cn/graphql/", {
- headers: { "content-type": "application/json" },
- method: "POST",
- body: JSON.stringify({
- operationName: "questionEditorData",
- variables: { titleSlug },
- query: `
- query questionEditorData($titleSlug: String!) {
- question(titleSlug: $titleSlug) {
- codeSnippets {
- langSlug
- code
- }
- }
- }
- `,
- }),
- })
- .then((v) => v.json())
- .then((v) => {
- textarea.value = v.data.question.codeSnippets.find(
- (v) => v.langSlug == "cpp"
- ).code;
- });
- // more conservative requestAnimationFrame
- // const originRequestAnimationFrame = globalThis.requestAnimationFrame;
- // let rafCounter = 0;
- // let rafBoost = false;
- // globalThis.addEventListener("pointermove", () => {
- // rafBoost = true;
- // });
- // globalThis.requestAnimationFrame = (callback) => {
- // // if (rafBoost || rafCounter === 0) {
- // originRequestAnimationFrame(callback);
- // // } else {
- // setTimeout(() => {
- // originRequestAnimationFrame(callback);
- // }, 900);
- // // }
- // rafCounter = (rafCounter + 1) % 4;
- // };
- // https://leetcode.cn/problems/intersection-of-two-arrays-ii/description/
- // ublock append ||static.leetcode.cn/lc-monaco/
- /*
- fetch("https://leetcode.cn/graphql/", {
- headers: { "content-type": "application/json" },
- method: "POST",
- body: JSON.stringify({
- query:
- "\n query questionTitle($titleSlug: String!) {\n question(titleSlug: $titleSlug) {\n questionId\n questionFrontendId\n title\n titleSlug\n isPaidOnly\n difficulty\n likes\n dislikes\n categoryTitle\n }\n}\n ",
- variables: { titleSlug: "intersection-of-two-arrays-ii" },
- operationName: "questionTitle",
- }),
- })
- .then((v) => v.text())
- .then((v) => console.log(v));
- // 获取预设代码片段
- fetch("https://leetcode.cn/graphql/", {
- headers: { "content-type": "application/json" },
- method: "POST",
- body: JSON.stringify({
- query:
- "\n query questionEditorData($titleSlug: String!) {\n question(titleSlug: $titleSlug) {\n questionId\n questionFrontendId\n codeSnippets {\n lang\n langSlug\n code\n }\n envInfo\n enableRunCode\n hasFrontendPreview\n frontendPreviews\n }\n}\n ",
- variables: { titleSlug: "intersection-of-two-arrays-ii" },
- operationName: "questionEditorData",
- }),
- })
- .then((v) => v.json())
- .then((v) => console.log(v));
- fetch("https://leetcode.cn/graphql/", {
- headers: { "content-type": "application/json" },
- method: "POST",
- body: JSON.stringify({
- query:
- "\n query questionContent($titleSlug: String!) {\n question(titleSlug: $titleSlug) {\n content\n editorType\n mysqlSchemas\n dataSchemas\n }\n}\n ",
- variables: { titleSlug: "intersection-of-two-arrays-ii" },
- operationName: "questionContent",
- }),
- });
- fetch("https://leetcode.cn/graphql/", {
- headers: { "content-type": "application/json" },
- method: "POST",
- body: JSON.stringify({
- query:
- "\n query questionTranslations($titleSlug: String!) {\n question(titleSlug: $titleSlug) {\n translatedTitle\n translatedContent\n }\n}\n ",
- variables: { titleSlug: "intersection-of-two-arrays-ii" },
- operationName: "questionTranslations",
- }),
- });
- */