先决条件
脚本名称
抖音优化
描述 & 解决方案
希望大佬可以看看代码 您在四月五号更新后 我原先一个下载视频图文的脚本和您的优化冲突 互斥 关掉其中一个另外一给就可以用 可不可以优化一下 如果冒犯了 大佬直接无视就可以了 这边是我这下载的代码 也是找git上的一个 然后通过deepseek加点自己想要的功能 这个下载脚本的代码最初版本我没保存 以下是deepseek给出的方案
现在,我们直接解决问题。既然你提供了“抖音优化”脚本的 GitHub 地址,我查看了它的代码,找到了冲突的根源。该脚本通过 @require 引入了几个大型库(如 @whitesev/utils、@whitesev/domutils 等),这些库在加载时可能会在全局对象(window)上挂载属性或函数。其中某个库内部定义了一个变量 r,与下载脚本中的某个变量名冲突。
更关键的是,该脚本使用了 // @run-at document-start,意味着它在页面最早期执行,并可能修改了 window 上的 Object.defineProperty、Function.prototype.apply 等原生方法(见代码中的 Hook 部分)。这种底层的修改可能会影响其他脚本的正常运行。
既然你希望两个插件都能用,且不愿意放弃“抖音优化”,那么最直接的方法是修改“抖音优化”脚本本身,而不是继续改下载脚本(因为下载脚本已经很干净了)。当然,如果你坚持只改下载脚本,我可以提供一个更极端的隔离方案,但可能影响下载脚本的部分功能(比如无法捕获网络请求)。
🎯 推荐方案:修改“抖音优化”脚本,消除冲突
这是最彻底的解决方式。你只需要在“抖音优化”脚本的最开头添加一行代码,强制清除可能存在的全局 r 变量。
打开油猴管理面板,找到“抖音优化”脚本,点击“编辑”。
在代码的最顶部(// ==UserScript== 区块之后,(function (DOMUtils, pops, Utils, Qmsg) { 之前)插入以下代码:
javascript
// 强制删除可能存在的全局变量 r,避免与其他脚本冲突
if (typeof r !== 'undefined') {
delete window.r;
}
var r = undefined; // 重新声明,但值置为 undefined,不影响内部逻辑
完整的修改后开头示例:
javascript
// ==UserScript==
// @name 抖音优化
// ... 其他元数据 ...
// ==/UserScript==
// 强制删除可能存在的全局变量 r,避免与其他脚本冲突
if (typeof r !== 'undefined') {
delete window.r;
}
var r = undefined;
(function (DOMUtils, pops, Utils, Qmsg) {
"use strict";
// ... 原有代码 ...
保存脚本,刷新抖音页面。
原理:该脚本内部某个依赖库在加载时可能意外地创建了一个全局变量 r(可能是一个函数或对象)。通过提前删除并重新声明为 undefined,可以避免下载脚本在检测到 r 已存在时报错。这不会破坏“抖音优化”的功能,因为它的内部代码并不依赖这个全局 r(它使用的是局部变量)。
这是下载视频的代码 若有冒犯 请直接无视 抱歉
新建文本文档.txt
先决条件
脚本名称
抖音优化
描述 & 解决方案
希望大佬可以看看代码 您在四月五号更新后 我原先一个下载视频图文的脚本和您的优化冲突 互斥 关掉其中一个另外一给就可以用 可不可以优化一下 如果冒犯了 大佬直接无视就可以了 这边是我这下载的代码 也是找git上的一个 然后通过deepseek加点自己想要的功能 这个下载脚本的代码最初版本我没保存 以下是deepseek给出的方案
现在,我们直接解决问题。既然你提供了“抖音优化”脚本的 GitHub 地址,我查看了它的代码,找到了冲突的根源。该脚本通过 @require 引入了几个大型库(如 @whitesev/utils、@whitesev/domutils 等),这些库在加载时可能会在全局对象(window)上挂载属性或函数。其中某个库内部定义了一个变量 r,与下载脚本中的某个变量名冲突。
更关键的是,该脚本使用了 // @run-at document-start,意味着它在页面最早期执行,并可能修改了 window 上的 Object.defineProperty、Function.prototype.apply 等原生方法(见代码中的 Hook 部分)。这种底层的修改可能会影响其他脚本的正常运行。
既然你希望两个插件都能用,且不愿意放弃“抖音优化”,那么最直接的方法是修改“抖音优化”脚本本身,而不是继续改下载脚本(因为下载脚本已经很干净了)。当然,如果你坚持只改下载脚本,我可以提供一个更极端的隔离方案,但可能影响下载脚本的部分功能(比如无法捕获网络请求)。
🎯 推荐方案:修改“抖音优化”脚本,消除冲突
这是最彻底的解决方式。你只需要在“抖音优化”脚本的最开头添加一行代码,强制清除可能存在的全局 r 变量。
打开油猴管理面板,找到“抖音优化”脚本,点击“编辑”。
在代码的最顶部(// ==UserScript== 区块之后,(function (DOMUtils, pops, Utils, Qmsg) { 之前)插入以下代码:
javascript
// 强制删除可能存在的全局变量 r,避免与其他脚本冲突
if (typeof r !== 'undefined') {
delete window.r;
}
var r = undefined; // 重新声明,但值置为 undefined,不影响内部逻辑
完整的修改后开头示例:
javascript
// ==UserScript==
// @name 抖音优化
// ... 其他元数据 ...
// ==/UserScript==
// 强制删除可能存在的全局变量 r,避免与其他脚本冲突
if (typeof r !== 'undefined') {
delete window.r;
}
var r = undefined;
(function (DOMUtils, pops, Utils, Qmsg) {
"use strict";
// ... 原有代码 ...
保存脚本,刷新抖音页面。
原理:该脚本内部某个依赖库在加载时可能意外地创建了一个全局变量 r(可能是一个函数或对象)。通过提前删除并重新声明为 undefined,可以避免下载脚本在检测到 r 已存在时报错。这不会破坏“抖音优化”的功能,因为它的内部代码并不依赖这个全局 r(它使用的是局部变量)。
这是下载视频的代码 若有冒犯 请直接无视 抱歉
新建文本文档.txt