// ==UserScript== // @name Bunpro: Jisho Button // @namespace http://tampermonkey.net/ // @version 0.3.3 // @description Searches the sentence on Jisho. // @author Kumirei // @include https://bunpro.jp/* // @require https://greasyfork.org/scripts/5392-waitforkeyelements/code/WaitForKeyElements.js?version=115012 // @grant none // @downloadURL none // ==/UserScript== (function() { //Wait until we're on the study page and can add the button waitForKeyElements('.study-question-japanese', function(e) { //add button if (!$('#buttonsBar').length) { $('#check-grammar').before('
'); $('head').append(''); } $('#buttonsBar').append(''); //Bind J to the Jisho button $('#study-answer-input').on('keyup', function(e) { if (e.which == 74 && $('#submit-study-answer').attr('value') == "Next") { $('#JishoButton').click(); } }); }); })(); //Extracts the sentence from the sentence elements parseSentence = function(sentenceElem) { var sentence = ""; sentenceElem.childNodes.forEach(function(elem) { // find the text in each kind of element and append it to the sentence string var name = elem.nodeName; if (name == "#text") { sentence += elem.data; } else if (name == "STRONG" || name == "SPAN") { if (name == "STRONG" && elem.children.length) { sentence += elem.children[0].childNodes[0].data; // with kanji in url //sentence += elem.children[0].children[1].innerText; // with kana in url } else { sentence += elem.innerText; } } else if (name == "RUBY") { sentence += elem.childNodes[0].data; // with kanji in url //sentence += elem.children[1].innerText; // with kana in url } }); return sentence; }