Web bilingual translation, completely free to use, supports Deepl/Google/Bing/Tencent/Youdao, etc.
啊,为啥我这里能用?
哦,我知道了。是设置网站
那是因为和owen young是网站绑死了吧。
我有空看看能不能修。不过我高中要开学了。
可以手动修改配置文件实现修改设置。以 Tampermonkey 为例,打开插件的编辑页面,点击 storage 选项卡,上面写的就是 JSON 格式的配置内容。没看到的话 Tampermonkey config mode 改成 Advanced,点击脚本的悬浮图标随便改点什么,这样它就会写入配置。要修改的主要是 "userConfig
",从后面往前翻很快就找到了。不懂怎么写配置的话,安装新版的脚本,用图形界面设置好,在设置里面可以显示最终的配置文件,把相应的地方的内容复制粘贴过来就行了。或者也可以试着把全部的配置都贴过来,估计也行。
因为这个版本很老了,所以很多新版的设置都没用。主要能修改的是快捷键、译文格式、服务配置、自动翻译/不要翻译的网站。服务配置只能用这个版本有的这几个,点网页上的图标看到的就是全部能用的了。好在已经支持 OpenAI 了,很多 AI 厂商都提供 OpenAI 兼容的调用方式,可以正常使用。在新版的 OpenAI 那里填合适的 地址、key、模型 就能得到合适的配置。只是不能像新版那样点图标就能快速切换。
另外要注意在脚本前面加上语句 @connect API服务商的域名
,不然脚本不能向这个域名发送请求,也就无法获取翻译内容。同理,不信任官方的话,把有官方的域名的 @connect 语句删掉后更保险,反正这种上古版本也没必要连接了。
除了 "userConfig"
,有需要的话,前面的配置也可以按前面的方法,先在新版获取后再贴过来。
我是很久以前就安装了,一直没更新也照常使用,设置页面打不开后就自己研究出修改配置的方法。原来的代码 wayback machine 有备份,以后这个脚本页面也没了的话,可以去那里找到。
还有简单的方法:F12,找到这个弹窗的div,直接删除!!
ublock配着也行吧。
这个脚本可以加这个功能。但是我不是很会脚本开发。
卧槽。原来是我的浏览器设置有问题,很久以前屏蔽了页面的一些内容,导致现在打开后很多内容不显示,连弹窗都没有。我还以为是脚本太老了,网站不支持了。确实是用广告屏蔽插件删掉弹窗就好了。
在代码前面加个这个基本就行了(代码源于gemini)
let observer = null; // MutationObserver 实例
let divElement = null; // 用于存储找到的 div 元素
// 查找并隐藏 ID 为 'immersive-translate-modal-overlay' 的 div 的函数
function findAndRemoveDiv() {
divElement = document.getElementById('immersive-translate-modal-overlay');
if (divElement) {
divElement.style.visibility = 'hidden';
console.log('已经隐藏 ID 为 immersive-translate-modal-overlay 的 div 元素');
// 找到并删除后,停止观察
if (observer) {
observer.disconnect();
console.log("停止 DOM 观察者");
}
return true; // 找到并删除,返回 true
}
return false; // 未找到,返回 false
}
// 创建 MutationObserver 实例
observer = new MutationObserver(function(mutationsList, observer) {
// 每次 DOM 发生变化时,尝试查找并删除目标元素
if (findAndRemoveDiv()) {
// 如果找到了,findAndRemoveDiv 函数内部已经停止了 observer
return; // 找到后直接返回,不再继续观察
}
// 如果没找到,继续等待下次 DOM 变化
});
// 配置观察者:
const config = {
childList: true, // 观察目标子节点的添加和删除
subtree: true // 观察目标节点及其后代节点的所有变化
};
// 初始时尝试查找一次,以防元素在脚本加载时已经存在
if (findAndRemoveDiv()) {
return; // 如果初始时就找到了,直接返回,不需要启动观察者
}
// 启动观察者,监听 document.body (或者你认为目标 div 会被添加到的更具体的父元素)
observer.observe(document.body, config);
console.log("启动 DOM 观察者,等待 ID 为 immersive-translate-modal-overlay 的 div 出现...");
// 可选:设置超时时间
/*
setTimeout(function() {
if (!divElement && observer) {
observer.disconnect();
console.log("超时未找到 ID 为 immersive-translate-modal-overlay 的 div,已停止 DOM 观察者");
}
}, 10000); // 10 秒超时
*/
补充:增添判断,仅在设置页面执行:
// 目标 URL (不需要包含协议和路径,只需要域名)
const targetHostname = 'immersive-translate.owenyoung.com';
// 获取当前页面的 hostname
const currentHostname = window.location.hostname;
// 检查当前 hostname 是否与目标 hostname 匹配
if (currentHostname === targetHostname) {
// 如果 URL 是 immersive-translate.owenyoung.com,则执行脚本的功能
let observer = null; // MutationObserver 实例
let divElement = null; // 用于存储找到的 div 元素
// 查找并删除 ID 为 'immersive-translate-modal-overlay' 的 div 的函数
function findAndRemoveDiv() {
divElement = document.getElementById('immersive-translate-modal-overlay');
if (divElement) {
divElement.style.visibility = 'hidden';
// divElement.remove();
console.log('已删除 ID 为 immersive-translate-modal-overlay 的 div 元素');
// 找到并删除后,停止观察
if (observer) {
observer.disconnect();
console.log("停止 DOM 观察者");
}
return true; // 找到并删除,返回 true
}
return false; // 未找到,返回 false
}
// 创建 MutationObserver 实例
observer = new MutationObserver(function(mutationsList, observer) {
// 每次 DOM 发生变化时,尝试查找并删除目标元素
if (findAndRemoveDiv()) {
// 如果找到了,findAndRemoveDiv 函数内部已经停止了 observer
return; // 找到后直接返回,不再继续观察
}
// 如果没找到,继续等待下次 DOM 变化
});
// 配置观察者:
const config = {
childList: true,
// 观察目标子节点的添加和删除
subtree: true // 观察目标节点及其后代节点的所有变化
};
// 初始时尝试查找一次,以防元素在脚本加载时已经存在
if (findAndRemoveDiv()) {
return; // 如果初始时就找到了,直接返回,不需要启动观察者
}
// 启动观察者,监听 document.body (或者你认为目标 div 会被添加到的更具体的父元素)
observer.observe(document.body, config);
console.log("启动 DOM 观察者,等待 ID 为 immersive-translate-modal-overlay 的 div 出现...");
// 可选:设置超时时间
/*
setTimeout(function() {
if (!divElement && observer) {
observer.disconnect();
console.log("超时未找到 ID 为 immersive-translate-modal-overlay 的 div,已停止 DOM 观察者");
}
}, 10000); // 10 秒超时
*/
} else {
// 如果 URL 不是 immersive-translate.owenyoung.com,则不执行脚本功能,并输出提示信息
console.log(`当前域名 ($ {
currentHostname
})不是immersive - translate.owenyoung.com,脚本功能不执行。`);
}
另外,可以直接修改版本信息(0.6.2等
打开设置页面会有强制更新,用不了