您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Auto commit for Wanikani
当前为
// ==UserScript== // @name WK Auto Commit // @namespace WKAUTOCOMMIT // @version 0.4.3 // @description Auto commit for Wanikani // @author Johannes Mikulasch // @match http://www.wanikani.com/subjects/* // @match https://www.wanikani.com/subjects/* // @grant none // @run-at document-end // @license // ==/UserScript== /* * WK Auto Commit * If you typed in the correct answer then it is automatically commited. * Therefore, you have to use the 'enter' key way less than before. * * Version 0.4.3 * Bugfix: prevent a double commit when typing fast, which led to a shaking input window or in the worst case to * wrong input. * Version 0.4.2 * Quickfix: adapt to Wanikani update, which was deployed on March 27th, 2023 * (see https://community.wanikani.com/t/updates-to-lessons-reviews-and-extra-study/60912) * - removed jStorage and jQuery references * - changed the @match for the new lesson and review urls * - Note: did not check with compatibilites of other user scripts (like Lightning mode or Katakana for On'yomi) yet. * Version 0.4.1 * Bugfix: call commit() at most one time for each item * (see https://community.wanikani.com/t/userscript-auto-commit-the-end-of-the-enter-key/11825/64) * Version 0.4 * Compatibility with Lightning mode from the Double-Check userscript * Compatibility with Katakana For On'yomi userscript * Version 0.3 * Script works now on the Lessons page too * Version 0.2 * Makes script work with Greasemonkey and Firefox * Version 0.1 * Initial version * */ /* jshint -W097 */ 'use strict'; var activated = true; var click_threshold = 600; let expected_answers = []; var is_userscript_lightningmode_active = function () { /* Returns true if "Lightning Mode" from Userscript Double-Check is active */ return document.querySelector('.doublecheck-active')?.length >= 1; }; var toggle = function () { var button = document.querySelector("#WKAUTOCOMMIT_button"); if (activated) { // Deactivates WK Auto Commit mode button.title = "Switch auto commit on"; button.style.opacity = 0.5; button.textContent = "Auto Commit is off"; activated = false; } else { // Activates WK Auto Commit mode button.title = "Switch auto commit off"; button.style.opacity = 1.0; button.textContent = "Auto Commit is on"; activated = true; } }; var sanitize = function (str1) { var str2 = str1.replace(/\s/g, ''); // Removes Whitespaces str2 = str2.toLowerCase(); return str2; }; var commit = function () { if(!commit.usable) return; // Temporarily deactivate the commit function to prevent double commits commit.usable = false; const inputbutton = document.querySelector(".quiz-input__submit-button"); inputbutton.click(); if (!is_userscript_lightningmode_active()) { setTimeout(function(){ inputbutton.click();}, click_threshold); } }; var check_input = function () { // console.log("Checking Input", current_expected); const currentresponse = document.querySelector("#user-response").value; for (var i in expected_answers) { if (sanitize(currentresponse) === sanitize(expected_answers[i])) { commit(); break; } } }; var register_check_input = function () { var userinput = document.querySelector("#user-response"); userinput.onkeyup = function (event) { if (activated) { check_input(); } }; }; var addButton = function () { /* Define button */ var button = document.querySelector("#WKAUTOCOMMIT_button"); if (!button) { button = document.createElement("div"); button.id = "WKAUTOCOMMIT_button"; button.title = "Toggle Auto Commit Mode"; button.textContent = "Auto Commit is on"; button.style.backgroundColor = "#C55"; button.style.opacity = 1; button.style.display = "inline-block"; button.style.fontSize = "0.8125em"; button.style.color = "#FFF"; button.style.cursor = "pointer" button.style.padding = "10px"; button.style.verticalAlign = "bottom"; button.onclick = toggle; /* Prepend button to footer */ var body = document.querySelector("#turbo-body"); body.appendChild(button); } }; /* React on a willShowNextQuestion event, which is triggered by WaniKani when a new question is shown */ window.addEventListener("willShowNextQuestion", function(event) { //console.log("Received willShowNextQuestion event from WaniKani", event); register_check_input(); addButton(); /* Get expected answers from current item depending on the task (reading or meaning) */ expected_answers = [] const item = event.detail; const subject = item.subject; if (item.questionType === "meaning") { expected_answers = expected_answers.concat(subject.meanings); } else if (item.questionType === "reading") { if (subject.type === 'Vocabulary') { expected_answers = expected_answers.concat(subject.readings.map((e) => e.reading)); } else if (subject.type === 'Kanji') { if (subject.primary_reading_type === 'kunyomi') { expected_answers = expected_answers.concat(subject.kunyomi); } else if (subject.primary_reading_type === 'onyomi') { expected_answers = expected_answers.concat(subject.onyomi); } } } // Make the commit function usable again commit.usable = true; }); (function () { console.log('WK Auto Commit (a plugin for Wanikani): Initialized'); })();