您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Provides website settings for easier studying.
- // ==UserScript==
- // @name WaniKani Study Config
- // @namespace wkstudycfg
- // @version 1.0.3
- // @description Provides website settings for easier studying.
- // @author Robin Findley
- // @copyright 2014+, Robin Findley
- // @license MIT; http://opensource.org/licenses/MIT
- // @include http://www.wanikani.com/level/*
- // @include https://www.wanikani.com/level/*
- // @include http://www.wanikani.com/radicals*
- // @include https://www.wanikani.com/radicals*
- // @include http://www.wanikani.com/kanji*
- // @include https://www.wanikani.com/kanji*
- // @include http://www.wanikani.com/vocabulary*
- // @include https://www.wanikani.com/vocabulary*
- // @grant GM_addStyle
- // @grant GM_registerMenuCommand
- // ==/UserScript==
- //==[ History ]======================================================
- // 1.0.3 - Remove need for jquery.
- // 1.0.2 - Fix Firefox sandbox issue by @requiring jquery.
- // 1.0.1 - Fix @includes to add some missed pages.
- // 1.0.0 - Initial release.
- //===================================================================
- //-------------------------------------------------------------------
- // Global data container and initialization.
- //-------------------------------------------------------------------
- var wksc = {};
- wksc.criteria = {};
- wksc.criteria.unlocked_first = true;
- //-------------------------------------------------------------------
- // Vocabulary sort comparison.
- //-------------------------------------------------------------------
- function wk_vocab_compare(a, b) {
- var a_text, b_text, a_lock, b_lock;
- a_text = a.querySelector('.character').innerHTML;
- b_text = b.querySelector('.character').innerHTML;
- // If 'unlocked_first' option is selected, push locked items to the end of the list.
- if (wksc.criteria.unlocked_first == true) {
- a_lock = (a.className.match(/\blocked\b/)!=null);
- b_lock = (b.className.match(/\blocked\b/)!=null);
- if (!a_lock && b_lock) {
- return -1;
- }
- if (a_lock && !b_lock) {
- return 1;
- }
- }
- if (a_text < b_text) {
- return -1;
- }
- if (a_text > b_text) {
- return 1;
- }
- return 0;
- }
- //-------------------------------------------------------------------
- // Sort groups vocabulary.
- //-------------------------------------------------------------------
- function sort_vocab()
- {
- var vocab_groups, group, grp_cnt, grp_idx, words, word_cnt, word_idx;
- vocab_groups = document.querySelectorAll('.multi-character-grid');
- grp_cnt = vocab_groups.length;
- for (grp_idx = 0; grp_idx < grp_cnt; grp_idx++)
- {
- group = vocab_groups[grp_idx];
- if (group.querySelector('li[id|=vocabulary]')==undefined) {
- continue;
- }
- words = [];
- word_cnt = group.childElementCount;
- for (word_idx = 0; word_idx < word_cnt; word_idx++) {
- words.push(group.children[word_idx]);
- }
- words.sort(wk_vocab_compare);
- for (word_idx = 0; word_idx < word_cnt; word_idx++) {
- group.appendChild(words[word_idx]);
- }
- }
- }
- //-------------------------------------------------------------------
- // Add CSS styles to the document.
- //-------------------------------------------------------------------
- function add_styles() {
- GM_addStyle('.wksc_hide .character-item ul {opacity:0} .wksc_hide .character-item:hover ul {opacity:1.0}');
- }
- //-------------------------------------------------------------------
- // Hide or unhide radicals, kanji, and vocabulary meaning and pronunciation.
- //-------------------------------------------------------------------
- function set_visibility(hidden) {
- var elems, cnt, idx;
- elems = document.querySelectorAll('.single-character-grid, .multi-character-grid');
- cnt = elems.length;
- for (idx=0; idx<cnt; idx++) {
- if (hidden) {
- elems[idx].className += ' wksc_hide';
- } else {
- elems[idx].className = elems[idx].className.replace(/(^|\s+)wksc_hide(\s+|$)/g, ' ');
- }
- }
- }
- //-------------------------------------------------------------------
- // Check that all localStorage items are present and valid. Assign defaults as needed.
- //-------------------------------------------------------------------
- function check_storage() {
- wksc.hide_info = Number(localStorage.getItem("wksc_hide") || 1);
- if (!(wksc.hide_info >= 0 && wksc.hide_info <= 1)) {
- wksc.hide_info = 1;
- localStorage.setItem("wksc_hide", wksc.hide_info);
- }
- }
- //-------------------------------------------------------------------
- // Set up GreaseMonkey menu commands.
- //-------------------------------------------------------------------
- function GMsetup() {
- if (GM_registerMenuCommand) {
- GM_registerMenuCommand('WaniKani Study: Hide info until hover', function() {
- wksc.hide_info++;
- wksc.hide_info %= 2;
- localStorage.setItem("wksc_hide", wksc.hide_info);
- set_visibility(wksc.hide_info);
- });
- }
- }
- //-------------------------------------------------------------------
- // main()
- //-------------------------------------------------------------------
- function main() {
- check_storage();
- GMsetup();
- add_styles();
- sort_vocab();
- set_visibility(wksc.hide_info);
- }
- // Run main upon load.
- window.addEventListener("load", main, false);