您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
15.07.2021, 22:09:13
// ==UserScript== // @name typing-practice // @namespace Violentmonkey Scripts // @match *://*/* // @grant GM_openInTab // @version 1.0 // @author - // @description 15.07.2021, 22:09:13 // ==/UserScript== (function () { 'use strict'; let gText; function openTypingPractice(text) { const baseUrl = "https://10fastfingers.com/widget/typingtest"; const params = new URLSearchParams({ dur: "60000", rand: "0", words: text, }); const url = `${baseUrl}?${params.toString()}`.replace(/\+/g, "%20"); // 10fastfingers doesn't consider "+" as space GM_openInTab(url); } // Alt-T function detectHotKey(e) { // Use "KeyboardEvent.code" to support the same key position regardless of keyboard layout return e.altKey && e.code === "KeyT"; } function onKeyDown(e) { if (gText && detectHotKey(e)) { const cleanText = gText.toLowerCase().split(/\s/).join(" "); openTypingPractice(cleanText); } } function onSelectionChange() { // Enable hotkey only when there's a selection document.removeEventListener("keydown", onKeyDown); const selection = document.getSelection(); gText = selection === null || selection === void 0 ? void 0 : selection.toString().trim(); if (!gText) { return; } document.addEventListener("keydown", onKeyDown); } function register() { document.addEventListener("selectionchange", onSelectionChange); } function main() { register(); } main(); }());