Adds a delay after wrong answers to prevent double-tapping <enter>
目前為
// ==UserScript==
// @name Wanikani Mistake Delay
// @namespace wkmistakedelay
// @description Adds a delay after wrong answers to prevent double-tapping <enter>
// @include https://www.wanikani.com/review/session*
// @include https://www.wanikani.com/lesson/session*
// @version 2.0.0
// @author Robin Findley
// @copyright 2017+, Robin Findley
// @license MIT; http://opensource.org/licenses/MIT
// @run-at document-end
// @grant none
// ==/UserScript==
window.wkmistakedelay = {};
(function(gobj) {
// The amount of time to disable 2nd <enter> after a mistake (in milliseconds).
var DELAY_PERIOD = 2000;
var old_submit_handler, old_answer_checker, ignore_submit = false;
function new_answer_checker() {
// Call the original answer checker.
var result = old_answer_checker.apply(this, arguments);
// If we didn't pass,
if (!result.passed) {
ignore_submit = true;
setTimeout(function() {
ignore_submit = false;
$('#user-response').attr('disabled','disabled');
}, DELAY_PERIOD);
}
return result;
}
function new_submit_handler(e) {
if (ignore_submit) return false;
return old_submit_handler.apply(this, arguments);
}
function startup() {
// Check if we can intercept the submit button handler.
try {
old_submit_handler = $._data( $('#answer-form button')[0], 'events').click[0].handler;
old_answer_checker = answerChecker.evaluate;
} catch(err) {
}
if (typeof old_submit_handler !== 'function' || typeof old_answer_checker !== 'function') {
alert('Wanikani Mistake Delay script is not working.');
return;
}
// Replace the handlers.
$._data( $('#answer-form button')[0], 'events').click[0].handler = new_submit_handler;
answerChecker.evaluate = new_answer_checker;
}
// Run startup() after window.onload event.
if (document.readyState === 'complete')
startup();
else
window.addEventListener("load", startup, false);
})(window.wkselfstudy);