您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows you to click Japanese sentences and their translations to copy them to clipboard.
当前为
// ==UserScript== // @name Bunpro: Copy Sentences // @namespace http://tampermonkey.net/ // @version 0.2.4 // @description Allows you to click Japanese sentences and their translations to copy them to clipboard. // @author Kumirei // @include *bunpro.jp/* // @require https://gf.qytechs.cn/scripts/5392-waitforkeyelements/code/WaitForKeyElements.js?version=115012 // @grant none // ==/UserScript== (function() { waitForKeyElements('body', function(e) { e.on('click', function(e) { //english example sentences else if (["english-example-sentence", "example-sentence-english"].includes(e.target.className)) copyText(e.target.innerText); //while studying else if (e.target.className == "example-sentence-english hide-english") copyText(e.target.innerText); //grammar page else if (["english-example-sentence", "example-sentence-english"].includes(e.target.parentNode.className)) copyText(e.target.parentNode.innerText); //japanese example sentences else if (e.target.className == "japanese-example-sentence") copyText(parseSentence(e.target)); else if ($(e.target).closest('li')[0] != undefined && $(e.target).closest('li')[0].className == "japanese-example-sentence") copyText(parseSentence($(e.target).closest('li')[0])); }); }); //add buttons waitForKeyElements('#check-grammar', function(e) { if (!$('#buttonsBar').length) { $('#check-grammar').before('<div id="buttonsBar"><div class="flexWrapper"</div></div>'); $('head').append('<style id="ButtonBarStyle">'+ '@media (max-width: 480px) {'+ '#buttonsBar .barButton {'+ 'height: 30px;'+ 'font-size: 12px;'+ '}'+ '}'+ '#buttonsBar {'+ 'margin-top: 2.5px;'+ '}'+ '#buttonsBar .flexWrapper {'+ 'height: 40px;'+ 'display: flex;'+ 'flex-wrap: wrap;'+ 'margin: 0 -2.5px;'+ '}'+ '#buttonsBar .barButton {'+ 'flex: 1;'+ 'margin: 2.5px;'+ '}'+ '#buttonsBar .barButton input {'+ 'background: rgba(25,34,49,0.8);'+ 'height: 100% !important;'+ 'color: white;'+ 'border: 0;'+ '}'+ '#buttonsBar .barButton input:hover {'+ 'color: rgb(103, 114, 124);'+ '}'+ '</style>'); } $('#buttonsBar .flexWrapper').append('<div class="barButton"><input id="copyJP" type="button" value="Copy JP" onclick="copyText(parseSentence($(\'.study-question-japanese > span\')[0]));"></div>'); $('#buttonsBar .flexWrapper').append('<div class="barButton"><input id="copyEN" type="button" value="Copy EN" onclick="copyText($(\'.study-question-english-hint > span\')[0].innerText);"></div>'); }); })(); //Extracts the sentence from the sentence element 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 string //sentence += elem.children[0].children[1].innerText; // with kana in string } else { sentence += elem.innerText; } } else if (name == "RUBY") { sentence += elem.childNodes[0].data; // with kanji in string //sentence += elem.children[1].innerText; // with kana in string } }); return sentence; } //copies the text copyText = function(text) { var textArea = document.createElement("textarea"); textArea.style.position = 'fixed'; textArea.style.top = 0; textArea.style.left = 0; textArea.style.width = '2em'; textArea.style.height = '2em'; textArea.style.padding = 0; textArea.style.border = 'none'; textArea.style.outline = 'none'; textArea.style.boxShadow = 'none'; textArea.style.background = 'transparent'; textArea.value = text; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { var successful = document.execCommand('copy'); var msg = successful ? 'successful' : 'unsuccessful'; console.log('Copying text command was ' + msg); console.log('Copied Sentence:', text); } catch (err) { console.log('Oops, unable to copy'); } document.body.removeChild(textArea); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址