Searches the sentence on Jisho.
当前为
// ==UserScript==
// @name Bunpro: Jisho Button
// @namespace http://tampermonkey.net/
// @version 0.3.1
// @description Searches the sentence on Jisho.
// @author Kumirei
// @include https://bunpro.jp/*
// @require https://greatest.deepsurf.us/scripts/5392-waitforkeyelements/code/WaitForKeyElements.js?version=115012
// @grant 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('<div id="buttonsBar"></div>');
$('head').append('<style id="ButtonBarStyle">'+
'#buttonsBar {'+
'margin: 5px 0;'+
'height: 40px;'+
'width: 100%;'+
'justify-content: center;'+
'display: flex;'+
'}'+
'.barButton {'+
'width: inherit;'+
'}'+
'.barButton:not(:first-child):not(:last-child) {'+
'margin: 0 2.5px;'+
'}'+
'.barButton:first-child {'+
'margin-right: 2.5px;'+
'}'+
'.barButton:last-child {'+
'margin-left: 2.5px;'+
'}'+
'.barButton:only-child {'+
'margin: 0;'+
'}'+
'.barButton input {'+
'background: rgba(25,34,49,0.8);'+
'height: 100% !important;'+
'color: white;'+
'border: 0;'+
'}'+
'.barButton input:hover {'+
'color: rgb(103, 114, 124);'+
'}'+
'</style>');
}
$('#buttonsBar').append('<div class="barButton"><input id="JishoButton" type="button" value="Jisho" onclick="window.open(\'https://www.jisho.org/search/\')"></div>');
//Changes the target url of the button when item changes
waitForKeyElements('.study-question-japanese > span', function(e) {
var sentence = parseSentence(e[0]);
$('#JishoButton').attr('onclick', 'window.open("https://jisho.org/search/' + sentence + '")');
});
//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
function parseSentence(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;
}
})();