您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Expands programming exercises with keyboard
当前为
// ==UserScript== // @name Gradescope assignment expander // @namespace https://gist.github.com/isaacl/86d5121ede0eeac3eb6a4016555ad70e // @version 0.1.2 // @description Expands programming exercises with keyboard // @author Isaac Levy // @match *://*.gradescope.com/* // @grant none // @license MIT // ==/UserScript== /* jshint esversion: 6 */ (function() { 'use strict'; let expanded = 0; let allToggles = [] const UP_CODE = 38; const DOWN_CODE = 40; const X_CODE = 88; // Cycle through. const ALL_CODES = [UP_CODE, DOWN_CODE, X_CODE]; document.addEventListener('keydown', (e) => { const code = e.keyCode; if (!ALL_CODES.includes(code)) return; // Cache toggles query. if (allToggles.length === 0) { allToggles = document.querySelectorAll('button.fileViewerHeader--toggleButton'); } const numToggles = allToggles.length; if (code === DOWN_CODE && expanded < numToggles - 1) { expanded++; } else if (code === UP_CODE && expanded > 0) { expanded--; } else if (code === X_CODE) { if (e.shiftKey) { expanded = (expanded - 1 + numToggles) % numToggles; } else { expanded = (expanded + 1) % numToggles; } } allToggles.forEach((e, i) => { const shouldExpand = expanded === i; const isExpanded = e.getAttribute('aria-expanded') === 'true'; if (shouldExpand !== isExpanded) e.click(); }); }); })();