您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
禁止谷歌翻译页面上的文件名和代码,在F辣条要甜点的基础上修改
当前为
// ==UserScript== // @name github禁翻译代码和文件名 // @namespace http://5jianzhan.com // @author itldg // @version 1.0.1 // @description 禁止谷歌翻译页面上的文件名和代码,在F辣条要甜点的基础上修改 // @author MewoChen // @include *://github.com* // @match *://github.com* // @match *://www.npmjs.com* // @license MIT // ==/UserScript== /*jshint esversion: 6 */ (function() { 'use strict'; const addCodeEle = function (ele) {ele.innerHTML = '<code>' + ele.innerHTML + '</code>'} const hasCodeEleChild = function (ele) {return !!ele.querySelector('code')} const _ = {} _.debounce = function (func, wait) { var lastCallTime var lastThis var lastArgs var timerId function startTimer (timerExpired, wait) { return setTimeout(timerExpired, wait) } function remainingWait(time) { const timeSinceLastCall = time - lastCallTime const timeWaiting = wait - timeSinceLastCall return timeWaiting } function shoudInvoking (time) { return lastCallTime !== undefined && (time - lastCallTime >= wait) } function timerExpired () { const time = Date.now() if (shoudInvoking(time)) { return invokeFunc() } timerId = startTimer(timerExpired, remainingWait(time)) } function invokeFunc () { timerId = undefined const args = lastArgs const thisArg = lastThis let result = func.apply(thisArg, args) lastArgs = lastThis = undefined return result } function debounced (...args) { let time = Date.now() lastThis = this lastArgs = args lastCallTime = time if (timerId === undefined) { timerId = startTimer(timerExpired, wait) } } return debounced } let time = 0 const TV = document.querySelector('body') // 监听DOM变更 const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver const option = { 'childList': true, 'subtree': true } const doNotTranslateCode = function (mutations, observer) { if (time >= 20) { observer.disconnect() observer.takeRecords() time = 0 setTimeout(function() { mo.observe(TV, option) }, 50) } const files = document.querySelectorAll('.file,div[role=rowheader]') let pres = document.querySelectorAll('pre,div[itemprop=text]') let h = [] ;['1','2','3','4','5','6'].forEach((item)=>{ if (!document.querySelectorAll(`h${item}`)) return false h = [...h,...document.querySelectorAll(`h${item}`)] }) pres = [...pres,...h] if (files.length > 0) { if (window.location.href.search(/.md/i) !== -1) { if (pres.length > 0) { pres.forEach(function(pre){if (!hasCodeEleChild(pre)) addCodeEle(pre)}) } } else { files.forEach(function(file){if (!hasCodeEleChild(file)) addCodeEle(file)}) } } if (pres.length > 0) { pres.forEach(function(pre){if (!hasCodeEleChild(pre)) addCodeEle(pre)}) } time++ } //const mo = new MutationObserver(_.debounce(doNotTranslateCode, 50)) const mo = new MutationObserver(_.debounce(doNotTranslateCode, 50)) mo.observe(TV, option) //---------------------------------------------------------------------------------------------------------------------------------------------------- const markNoTranslate = function () { // 代码 议题 拉取请求 操作 const lists = document.querySelectorAll('ul.list-style-none'); lists.forEach(function (ul) { const items = ul.querySelectorAll('li.d-inline'); items.forEach(function (li) { li.classList.add('notranslate'); }); }); // 文件名 const elements = document.querySelectorAll('.react-directory-filename-cell'); elements.forEach(function (element) { element.classList.add('notranslate'); }); //---------------------------------------------------------------------------------------------------------------------------------------------------- // const elements17 = document.querySelectorAll('.files'); elements17.forEach(function (element) { element.classList.add('notranslate'); }); // 标签 const elements2 = document.querySelectorAll('.topic-tag.topic-tag-link'); elements2.forEach(function (element) { element.classList.add('notranslate'); }); // 语言使用情况 const elements3 = document.querySelectorAll('.color-fg-default.text-bold.mr-1'); elements3.forEach(function (element) { element.classList.add('notranslate'); }); // 顶部项目名 const elements4 = document.querySelectorAll('.AppHeader-context-item-label '); elements4.forEach(function (element) { element.classList.add('notranslate'); }); // ❌ const elements6 = document.querySelectorAll('.my-3.d-flex.flex-items-center'); elements6.forEach(function (element) { element.classList.add('notranslate'); }); // 右栏仓库大小 const elements7 = document.querySelectorAll('.Link.Link--muted'); // const elements7 = document.querySelectorAll('.Link.Link--muted span'); elements7.forEach(function (element) { element.classList.add('notranslate'); }); // ❌ const elements8 = document.querySelectorAll('.Box-row.d-flex.flex-column.flex-md-row'); elements8.forEach(function (element) { element.classList.add('notranslate'); }); // 代码 议题 拉取请求 操作 const elements9 = document.querySelectorAll('.ActionListItem'); elements9.forEach(function (element) { element.classList.add('notranslate'); }); // // 顶部星数 const elements14 = document.querySelectorAll('.d-flex.flex-items-center.flex-justify-center.mr-1.gap-1.color-fg-muted'); elements14.forEach(function (element) { element.classList.add('notranslate'); }); // const elements18 = document.querySelectorAll('#StickyHeader #file-name-id-wide code'); elements18.forEach(function (element) { element.classList.add('notranslate'); }); // const elements19 = document.querySelectorAll('#StickyHeader a[data-testid="breadcrumbs-repo-link"]'); elements19.forEach(function (element) { element.classList.add('notranslate'); }); // const elements20 = document.querySelectorAll('#repos-file-tree ul[class*="prc-TreeView-TreeView"] .PRIVATE_TreeView-item-content-text span'); elements20.forEach(function (element) { element.classList.add('notranslate'); }); // /*const elements21 = document.querySelectorAll('.react-directory-truncate .Link--primary'); elements21.forEach(function (element) { element.classList.add('notranslate'); });*/ // /*const elements22 = document.querySelectorAll('.react-directory-truncate .Link--primary'); elements22.forEach(function (element) { element.classList.add('notranslate'); });*/ // /*const elements23 = document.querySelectorAll('.react-directory-truncate .Link--primary'); elements23.forEach(function (element) { element.classList.add('notranslate'); });*/ // /*const elements24 = document.querySelectorAll('.react-directory-truncate .Link--primary'); elements24.forEach(function (element) { element.classList.add('notranslate'); });*/ // /*const elements25 = document.querySelectorAll('.react-directory-truncate .Link--primary'); elements25.forEach(function (element) { element.classList.add('notranslate'); });*/ }; // 还可以在页面加载时立即标记已经存在的元素 setTimeout(function() { markNoTranslate(); },1000); })()