Immersive Translate

Web bilingual translation, completely free to use, supports Deepl/Google/Bing/Tencent/Youdao, etc.

< 脚本Immersive Translate的反馈

提问/评论

§
发表于:2025-02-11
编辑于:2025-02-11

打开设置页面会有强制更新,用不了

louiesun作者
§
发表于:2025-02-12

啊,为啥我这里能用?

louiesun作者
§
发表于:2025-02-12
编辑于:2025-02-12

哦,我知道了。是设置网站
那是因为和owen young是网站绑死了吧。
我有空看看能不能修。不过我高中要开学了。

§
发表于:2025-02-27

可以手动修改配置文件实现修改设置。以 Tampermonkey 为例,打开插件的编辑页面,点击 storage 选项卡,上面写的就是 JSON 格式的配置内容。没看到的话 Tampermonkey config mode 改成 Advanced,点击脚本的悬浮图标随便改点什么,这样它就会写入配置。要修改的主要是 "userConfig",从后面往前翻很快就找到了。不懂怎么写配置的话,安装新版的脚本,用图形界面设置好,在设置里面可以显示最终的配置文件,把相应的地方的内容复制粘贴过来就行了。或者也可以试着把全部的配置都贴过来,估计也行。

因为这个版本很老了,所以很多新版的设置都没用。主要能修改的是快捷键、译文格式、服务配置、自动翻译/不要翻译的网站。服务配置只能用这个版本有的这几个,点网页上的图标看到的就是全部能用的了。好在已经支持 OpenAI 了,很多 AI 厂商都提供 OpenAI 兼容的调用方式,可以正常使用。在新版的 OpenAI 那里填合适的 地址、key、模型 就能得到合适的配置。只是不能像新版那样点图标就能快速切换。

另外要注意在脚本前面加上语句 @connect API服务商的域名,不然脚本不能向这个域名发送请求,也就无法获取翻译内容。同理,不信任官方的话,把有官方的域名的 @connect 语句删掉后更保险,反正这种上古版本也没必要连接了。

除了 "userConfig",有需要的话,前面的配置也可以按前面的方法,先在新版获取后再贴过来。

我是很久以前就安装了,一直没更新也照常使用,设置页面打不开后就自己研究出修改配置的方法。原来的代码 wayback machine 有备份,以后这个脚本页面也没了的话,可以去那里找到。

§
发表于:2025-02-28

还有简单的方法:F12,找到这个弹窗的div,直接删除!!

louiesun作者
§
发表于:2025-03-01

ublock配着也行吧。
这个脚本可以加这个功能。但是我不是很会脚本开发。

§
发表于:2025-03-01
编辑于:2025-03-01

卧槽。原来是我的浏览器设置有问题,很久以前屏蔽了页面的一些内容,导致现在打开后很多内容不显示,连弹窗都没有。我还以为是脚本太老了,网站不支持了。确实是用广告屏蔽插件删掉弹窗就好了。

§
发表于:2025-03-03

在代码前面加个这个基本就行了(代码源于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 秒超时
    */
§
发表于:2025-03-03
编辑于:2025-03-03

补充:增添判断,仅在设置页面执行:

// 目标 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,脚本功能不执行。`);
}
§
发表于:2025-03-03

另外,可以直接修改版本信息(0.6.2等

louiesun作者
§
发表于:2025-03-21

另外,可以直接修改版本信息(0.6.2等

给朋友发了个权限邀请

发表回复

登录(不可用)以发表回复。

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址