您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add "Translate tweet with DeepL" button
当前为
// ==UserScript== // @name DeepL Twitter translation // @namespace http://tampermonkey.net/ // @version 0.2 // @description Add "Translate tweet with DeepL" button // @author Remonade // @match https://twitter.com/* // @grant none // @require http://code.jquery.com/jquery-3.5.1.min.js // ==/UserScript== (function() { 'use strict'; var injected = false; var injectInterval = null; var waitForTitleHeadInterval = null; function isHTML(str) { var doc = new DOMParser().parseFromString(str, "text/html"); return Array.from(doc.body.childNodes).some(node => node.nodeType === 1); } function injectDeeplTranslation() { if(!injected) { var translateButton = $("span:contains('Translate Tweet')"); if(translateButton.length > 0) { // Get the tweet content var tweetContainer = translateButton.parent().siblings(); var tweetLang = tweetContainer.attr("lang"); var tweetContent = ""; tweetContainer.children("span").each(function(index,item) { var tweetPart = $(item).html().trim(); if(tweetPart && tweetPart != "" && !isHTML(tweetPart)) { tweetContent += " " + tweetPart; } }); // Create new button var deeplButton = translateButton.parent().clone().appendTo(translateButton.parent().parent()); deeplButton.children("span").html("Translate Tweet with DeepL"); deeplButton.hover(function(){ $(this).css("text-decoration", "underline"); }, function(){ $(this).css("text-decoration", "none"); }); deeplButton.click(function() { var deeplUrl = "https://www.deepl.com/translator#" + tweetLang + "/en/" + tweetContent; window.open(deeplUrl,'_blank'); }); injected = true; } } else { clearInterval(injectInterval); injectInterval = null; } } function addObserverIfDesiredNodeAvailable() { var target = $("head > title")[0]; if(!target) { return; } clearInterval(waitForTitleHeadInterval); var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if(injectInterval == null) { injected = false; injectInterval = setInterval(injectDeeplTranslation, 100); } }); }); observer.observe(target, { subtree: true, characterData: true, childList: true }); } $(document).ready(function() { waitForTitleHeadInterval = setInterval(addObserverIfDesiredNodeAvailable, 100); injectInterval = setInterval(injectDeeplTranslation, 100); }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址