您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在谷歌翻译、百度翻译、网易有道翻译、腾讯翻译君的页面上增加了一个“自动/禁止格式化”按钮,用来自动移除从PDF等复制过来的文本中包含的换行、回车;优化连字符问题
// ==UserScript== // @name 翻译插件——去除换行(改) // @namespace [email protected] // @version 1.0.5 // @description 在谷歌翻译、百度翻译、网易有道翻译、腾讯翻译君的页面上增加了一个“自动/禁止格式化”按钮,用来自动移除从PDF等复制过来的文本中包含的换行、回车;优化连字符问题 // @author caiguang1997 // @match https://fanyi.baidu.com/* // @match http://fanyi.youdao.com/ // @match https://fanyi.qq.com/* // @match https://translate.google.cn/* // @match https://translate.google.com/* // @icon https://translate.google.cn/favicon.ico // @run-at document-end // ==/UserScript== // Convert string to web element function parseDom(arg) { var d = document.createElement('div'); d.innerHTML = arg; return d.firstChild; } const GOOGLE_TRANSLATE_CN = "translate.google.cn"; const GOOGLE_TRANSLATE = "translate.google.com"; const BAIDU_FANYI = "fanyi.baidu.com"; const YOUDAO_FANYI = "fanyi.youdao.com"; const QQ_FANYI = "fanyi.qq.com"; const FORMAT_CN = "自动格式化"; // Get source input element function getInputElement(host) { const idDict = { [GOOGLE_TRANSLATE_CN]: "source", [GOOGLE_TRANSLATE]: "source", [BAIDU_FANYI]: "baidu_translate_input", [YOUDAO_FANYI]: "inputOriginal" } if(host===QQ_FANYI) { return document.querySelector("body > div.layout-container > div.textpanel > div.textpanel-container.clearfix > div.textpanel-source.active > div.textpanel-source-textarea > textarea"); } else { const id = idDict[host]; return document.getElementById(id); } } // Format code function format(elemnt) { var txt = elemnt.value; //第一步:连字符与换行连用表示单词拼接 txt = txt.replace(/-\n/g,""); //第二步:将(前面一个符号为非句号、问号、感叹号、分号、冒号、换行的)换行符替换为空格 txt = txt.replace(/(?<![\.?!;:\n])\n/g," "); //第三步:上一步可能会增添多余空格,因此,多空格替换为单空格 txt = txt.replace(/ +/g," "); //第四步:将(前面一个符号为句号、问号、感叹号、分号、冒号、换行的)换行符替换为双回车 txt = txt.replace(/(?<=[\.?!;:])\n+/g,"\n\n"); elemnt.value = txt; } // Create new button function createButton(host) { const elemnt = getInputElement(host); var new_button = null; switch(host) { case GOOGLE_TRANSLATE_CN: case GOOGLE_TRANSLATE: var FORMAT = "自动格式化"; var buttonHtml = "<div id='my_format' class='tlid-input-button input-button header-button tlid-input-button-docs text-icon' role='tab' tabindex='-1'><div class='text'>" + FORMAT + "</div></div>" new_button = parseDom(buttonHtml); new_button.onclick = function() { if(document.getElementById('my_format').innerText==="自动格式化") { document.getElementById('my_format').innerText = "禁止格式化"; format(elemnt); elemnt.onchange = function () { format(elemnt); } } else{ document.getElementById('my_format').innerText = "自动格式化"; elemnt.onchange = function () {}; } }; break; case BAIDU_FANYI: var baidu_fanyi_css = "text-align: center; margin-left: 14px; width: 106px; height: 30px; line-height: 30px; font-size: 14px; color: #4395ff; letter-spacing: 2px; background-color: #f9f9f9; border: 1px solid #4395ff; border-radius: 3px"; new_button = parseDom(`<a id='my_format' href="javascript:" style="${baidu_fanyi_css}">${FORMAT_CN}</a>`); new_button.onclick = function() { if(document.getElementById('my_format').innerText==="自动格式化") { document.getElementById('my_format').innerText = "禁止格式化"; var translate_button = document.querySelector("#translate-button"); format(elemnt); translate_button.click(); elemnt.onchange = function () { format(elemnt); translate_button.click(); } } else{ document.getElementById('my_format').innerText = "自动格式化"; elemnt.onchange = function () {}; } }; break; case YOUDAO_FANYI: new_button = parseDom(`<a id='my_format' class="fanyi__operations--man clog-js" data-clog="AT_BUTTON_CLICK" data-pos="web.i.top" id="transMan" href="javascript:;"> ${FORMAT_CN} </a>`); new_button.onclick = function() { if(document.getElementById('my_format').innerText==="自动格式化") { document.getElementById('my_format').innerText = "禁止格式化"; var translate_button = document.querySelector("#transMachine"); format(elemnt); translate_button.click(); elemnt.onchange = function () { format(elemnt); translate_button.click(); } } else{ document.getElementById('my_format').innerText = "自动格式化"; elemnt.onchange = function () {}; } }; break; case QQ_FANYI: new_button = parseDom(`<div id='my_format' class="language-translate-button" node-type="translate_button">${FORMAT_CN}</div>`); new_button.onclick = function() { if(document.getElementById('my_format').innerText==="自动格式化") { document.getElementById('my_format').innerText = "禁止格式化"; var translate_button = document.querySelector("#language-button-group-translate > div"); format(elemnt); translate_button.click(); elemnt.onchange = function () { format(elemnt); translate_button.click(); } } else{ document.getElementById('my_format').innerText = "自动格式化"; elemnt.onchange = function () {}; } }; break; default: break; } return new_button; } // Get container function getContainer(host) { var container = null; switch(host) { case GOOGLE_TRANSLATE_CN: case GOOGLE_TRANSLATE: container = document.querySelector("body > div.container > div.frame > div.page.tlid-homepage.homepage.translate-text > div.input-button-container > div") break; case BAIDU_FANYI: container = document.querySelector("#main-outer > div > div > div.translate-wrap > div.trans-operation-wrapper.clearfix > div.trans-operation.clearfix"); break; case YOUDAO_FANYI: container = document.querySelector("body > div.fanyi > div.fanyi__operations > div.fanyi__operations--left"); break; case QQ_FANYI: container = document.querySelector("body > div.layout-container > div.language > div.language-container.clearfix"); break; default: break; } return container; } // Run from this (function() { var host = window.location.host; var new_button = createButton(host); var container = getContainer(host); container.appendChild(new_button); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址