Greasy Fork

Greasy Fork is available in English.

多邻国diy开发

多邻国做题配合划词翻译显示翻译文本

当前为 2024-02-21 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        多邻国diy开发
// @description 多邻国做题配合划词翻译显示翻译文本
// @match       https://www.duolingo.com/*
// @require     https://code.jquery.com/jquery-3.4.1.js
// @version 1.3.5
// @namespace http://greasyfork.icu/users/157318
// ==/UserScript==

function isLesson() {
    return /https:\/\/www.duolingo.com\/(lesson|practice|skill.*)/.test(window.location.href);
}

function fy(){
    var mydiv=$("#myDiv");
    if (mydiv.length==1){
        $("#myDiv").remove();
        return none;
    }
    var fanyi=$(".PcKtj");
    var strone="";
    if (fanyi.length==1){//一个一个词拼句子
        for(var i=0;i<fanyi.find("div").length;i++){
            //品句子
            strone=strone+fanyi.find("div").eq(i).text()+" ";
        }
        fanyi.append("<div id='myDiv'>"+strone+"</div>");
        //$("#myDiv").focus();
        window.getSelection().selectAllChildren(document.getElementById("myDiv"));
        $("#__hcfy__").shadowRoot.querySelector(".bp3-button").click();
        console.log(strone);
        $("body")[0].click();
    }
    var tiankong=$("._3NgMa._2Hg6H,._3Fi4A._2Hg6H");//_3QpTb _2Hg6H
    if (tiankong.length==1){//填空题品句子
        var tiankongstr=tiankong[0].innerText.replaceAll("\n","");
        tiankong.append("<div id='myDiv'>"+tiankongstr+"</div>");
        //$("#myDiv").focus();
        window.getSelection().selectAllChildren(document.getElementById("myDiv"));
        $("#__hcfy__").shadowRoot.querySelector(".bp3-button").click();
        $("#myDiv").click();
        setTimeout(() => {$("body")[0].click();}, 500);
        console.log(tiankongstr);
        return;
    }
    tiankong=$("._3QpTb._2Hg6H,._1iPXH._2Hg6H");//同时阅读,选句子和口语
    if (tiankong.length==1){//阅读并回答
        tiankongstr=tiankong[0].innerText.replaceAll("\n","");
        tiankong.append("<div id='myDiv'>"+tiankongstr+"</div>");
        //$("#myDiv").focus();
        window.getSelection().selectAllChildren(document.getElementById("myDiv"));
        $("#__hcfy__").shadowRoot.querySelector(".bp3-button").click();
        $("#myDiv").click();
        setTimeout(() => {$("body")[0].click();}, 500);
        console.log(tiankongstr);
        return;
    }
    tiankong=$("._3t3oQ._2FKqf._2ti2i,._3f_Q3._2FKqf._2ti2i,._1fYGK._2FKqf._2ti2i");//填空单词句子,有input
    if (tiankong.length==1){//填空
        tiankongstr=tiankong[0].textContent.replaceAll("\n","");
        tiankongstr=tiankongstr.replaceAll("_","");
        tiankong.append("<div id='myDiv'>"+tiankongstr+"</div>");
        //$("#myDiv").focus();
        window.getSelection().selectAllChildren(document.getElementById("myDiv"));
        $("#__hcfy__").shadowRoot.querySelector(".bp3-button").click();
        $("body").click();
        setTimeout(() => {$("body")[0].click();}, 500);
        console.log(tiankongstr);
        return;
    }
    //_1KUxv _11rtD口语 or 翻译中文
    tiankong=$("._1KUxv._11rtD");//口语
    if (tiankong.length==1){//
        tiankongstr=tiankong[0].innerText.replaceAll("\n","");
        tiankong.append("<div id='myDiv'>"+tiankongstr+"</div>");
        //$("#myDiv").focus();
        window.getSelection().selectAllChildren(document.getElementById("myDiv"));
        $("#__hcfy__").shadowRoot.querySelector(".bp3-button").click();
        $("#myDiv").click();
        setTimeout(() => {$("body")[0].click();}, 500);
        console.log(tiankongstr);
        return;
    }
    //_1KUxv _11rtD口语
    tiankong=$("._29e-M._39MJv._2Hg6H");//完成对话
    if (tiankong.length==1){
        tiankongstr=tiankong[0].innerText.replaceAll("\n","");
        tiankong.append("<div id='myDiv'>"+tiankongstr+"</div>");
        //$("#myDiv").focus();
        window.getSelection().selectAllChildren(document.getElementById("myDiv"));
        $("#__hcfy__").shadowRoot.querySelector(".bp3-button").click();
        //$("#myDiv").click();
        setTimeout(() => {$("body")[0].click();}, 500);
        console.log(tiankongstr);
        return;
    }

}
function addfy(){
    if ($("#benty4").length==0){

        $(".nP82K").append("<button id='benty4' style='float:right;'>翻译</button");
        $("#benty4").click(function(){fy();});
    }
}

$(function(){//页面加载完成执行
    setTimeout(() => {
        addfy();
    }, 5000);
    $("body").click(function(){addfy();});
});


window.addEventListener("keydown", function(e) {
    var key = e.key.toLowerCase();

    if (isLesson()) {

        if ($("#benty4").length==0){
            addfy();
        }
        // matching shortcut
        //         if (/[a-z]/.test(key)) {
        //             var hint = $(`span.matching-hint:contains(${key.toUpperCase()})`);
        //             var parent = hint.parent();
        //             if (!parent.attr("disabled")) {
        //                 parent.click();
        //             }
        //         }
        //console.log(e.key);
        // cancel click
        //         if (key == ";") {
        //             $("div.PcKtj button:last").click();
        //         }
        //duolingo 第五部分翻译意思
        if (key == "f2") {
            fy();
        }
        if (key == "f8") {
            $("._3a8EI._1ZuR6").eq(0).click();


            var isFocus=$("textarea").is(":focus");
            if(true==isFocus){
                console.log('有focus');
                var ev = $.Event('keypress');
                ev.which = 74; // Carriage-return (Enter)
                $('textarea').trigger(ev);
            }else{
                $("textarea").focus();
                console.log('没有focus');
            }/**/
        }
        if (key == "f9") {
            $("._3a8EI._1ZuR6").eq(1).click();
        }/*
        if (key == "escape") {
            $(".yWRY8._3yAjN").eq(0).click();
        }
        // discussion shortcut
        if (key == "d") {
            $("span:contains(Discuss)").click();
        }

        // report shortcut
        if (key == "r") {
            $("span:contains(Report)").click();
        }

        // keyboard toggle
        if (key == "b" && e.ctrlKey) {
            e.preventDefault();
            $("button[data-test=player-toggle-keyboard]").click();
        }*/

    }
});
/*
// insert a-z shortcut hints on matching tiles
var observer = new MutationObserver(function(mutations) {
    if (isLesson()){
        var tiles = $("div[data-test=word-bank] button[data-test=challenge-tap-token]");
        if (tiles.length > 0) {
            var alpha = "asdfghjklweruioxcvnm";
            tiles.each(function (i, e) {
                var tile = $(e);
                if (!tile.attr("hint-added")) {
                    var hint = document.createElement("span");
                    hint.className = "_2R_o5 _2S0Zh _2f9B3 matching-hint";
                    hint.innerHTML = alpha.charAt(i).toUpperCase();
                    hint.style.marginRight = "10px";
                    tile.prepend(hint);
                    hint = $(hint);
                    var buttonObserver = new MutationObserver(function(m) {
                        if (tile.hasClass("pmjld")) {
                            hint.removeClass("_2R_o5").addClass("Z7UoT");
                        } else {
                            hint.removeClass("Z7UoT").addClass("_2R_o5");
                        }
                        if (tile.attr("disabled")) {
                            hint.css("color", "#e5e5e5");
                            buttonObserver.disconnect();
                        }
                    });
                    buttonObserver.observe(e, {attributes: true});
                    tile.attr("hint-added", "1");
                }
            });
        }
    }
});

$("body").prepend("<div ><button id='benty4'>翻译</button></div>");
$("#benty4").click(function(){
    alert("ddd");
var e = $.Event("keydown"); //模拟一个键盘事件
e.keyCode = 66;
e.which = 66; //增加设置which
$('textarea')[0].click(); //模拟按键
    $(window).trigger(e);
});
*/



//observer.observe(document, {childList: true, subtree: true, attributes: false, characterData: false});