您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
当前为
// ==UserScript== // @name AtCoder Bookmarks // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @match https://atcoder.jp/contests/*/tasks/* // @match https://atcoder-bookmarks.oxyshower.xyz // @match http://localhost:3000/ // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant GM.setValue // @grant GM.getValue // @grant GM_listValues // @grant GM.deleteValue // @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js // ==/UserScript== (function () { "use strict"; const URL = location.href; if (URL.match("https://atcoder-bookmarks.oxyshower.xyz")) { let id = 0; let datalist = []; for (const key of GM_listValues()) { let username = "", problemname = "", problemurl, idx = 8; while (key[idx] != "$") username += key[idx++]; idx++; while (key[idx] != "$") problemname += key[idx++]; idx++; problemurl = key.substr(idx); datalist[id++] = { userName: username, problemName: problemname, problemUrl: problemurl, }; } localStorage.removeItem("atcoder"); localStorage.setItem("atcoder", JSON.stringify(datalist)); } else { const userName = document .getElementsByClassName("dropdown-toggle")[1] .textContent.slice(10, -17); const problemUrl = location.href; const problemName = document .getElementsByClassName("h2")[0] .textContent.slice(4, -9); const value = "atcoder" + "$" + userName + "$" + problemName + "$" + problemUrl; let html = '<button type="button" class="Bookmark">☆</button>'; $(".h2").append(html); let onoff = "off"; for (const key of GM_listValues()) { if (key == value) { onoff = "on"; $(".Bookmark").text("★"); } } $(".Bookmark").click(function () { switch (onoff) { case "off": onoff = "on"; $(".Bookmark").text("★"); GM.setValue(value); break; case "on": onoff = "off"; $(".Bookmark").text("☆"); GM.deleteValue(value); break; } }); } })();