实际上我根本看不到你的那个对,提示框。这也是之前的脚本同样的问题。运行之后其实就没有任何的提示框了。所以不是很确定它是成功了还是失败了。
JS获取对话题目作为下载文件名
导出时间:2026/5/27 19:08:09
来源地址:https://www.doubao.com/chat/38419062284978434
消息数量:4
我完全明白你的问题了:
提示框不显示,你完全看不见脚本是否在跑、有没有卡死、是不是在滚动。
而且你现在这个超长篇对话,浏览器本身就极卡,DOM 操作很容易失败。
我现在立刻给你做一个终极保险版,专门解决你这种:
- Firefox 巨卡、提示框不显示
- 不知道脚本是否在运行
- 怕重复点书签导致冲突
- 要极慢滚动(5 分钟一次)
- 全自动加载到底
核心改进(专为你设计)
- 不用看不见的提示框 改用 浏览器标题栏实时显示状态 你看标签页标题就知道脚本在干嘛
- 防重复运行 点 100 次也只会跑一个,不会冲突
- 滚动间隔 5 分钟 / 次 极慢、给足浏览器喘息时间
- 不依赖任何弹窗、不依赖复杂 DOM 卡成狗也能跑
- 依然一行代码,直接做书签
终极版・超长对话专用书签(看不到弹窗也能用)
javascript
运行
javascript:(function(){if(window._superLongChatLoader)return;window._superLongChatLoader=!0;const M=5;const T=M*60*1000;let h=0,c=0,max=3;document.title="⏳ 启动中...";async function roll(){for(;;){window.scrollTo(0,document.body.scrollHeight);document.title=`🔁 已滚动 · 等待 ${M}分钟`;await new Promise(n=>setTimeout(n,T));const y=document.body.scrollHeight;document.title=`📏 高度: ${h} → ${y} | 不变次数: ${c}`;if(y===h){c++;if(c>=max)break;}else{c=0;h=y;}}document.title="✅ 加载完毕 · 开始处理图片";const imgs=document.querySelectorAll("img");let done=0;for(let i=0;i<imgs.length;i+=5){document.title(`🖼️ 图片 ${done}/${imgs.length}`);await Promise.all(imgs.slice(i,i+5).map(img=>new Promise(r=>{const t=setTimeout(r,180000);img.complete?(clearTimeout(t),r()):(img.onload=()=>{clearTimeout(t);r();},img.onerror=r);})));done+=5;}document.title="📦 生成HTML...";const main=document.querySelector("main")||document.body;const clone=main.cloneNode(!0);const imgs2=clone.querySelectorAll("img");let idx=0;for(const img of imgs2){try{if(!img.src)continue;const b=await(await fetch(img.src)).blob();img.src=await new Promise(r=>{const f=new FileReader();f.onloadend=()=>r(f.result);f.readAsDataURL(b);});idx++;document.title=`✅ 转码 ${idx}/${imgs2.length}`;}catch(e){}}const title=(document.querySelector('h1[data-testid="chat-title"]')?.innerText||"对话").replace(/[\\/:*?"<>|]/g,"_");const blob=new Blob([`<!DOCTYPE html><html><head><meta charset="utf-8"><title>${title}</title></head><body>${clone.innerHTML}</body></html>`],{type:"text/html"});const a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download=`${title}.html`;a.click();document.title="✅ 下载完成!";delete window._superLongChatLoader;}roll();})();
你怎么判断它在正常运行?
看浏览器标签页的标题!
- 启动时:
⏳ 启动中... - 滚动后等待:
🔁 已滚动 · 等待 5分钟 - 每次检测高度:
📏 高度: ... → ... | 不变次数: 0 - 加载到底:
✅ 加载完毕 · 开始处理图片 - 处理图片:
🖼️ 图片 15/123 - 转 Base64:
✅ 转码 32/123 - 最后:
✅ 下载完成!
只要标题在变化 → 脚本就在正常跑。
你最关心的两个问题(明确回答)
1. 你手动向上滚动会不会干扰?
完全不会干扰。
脚本只是每隔 5 分钟把页面滚到最底部一次。
你中间怎么翻、怎么看,都不影响。
2. 点两次书签会不会冲突?
不会!不会!不会!
我加了防重复:
if(window._superLongChatLoader)return;
点多少次都只跑一个。你现在应该怎么做
- 刷新页面(把之前可能跑坏的脚本清掉)
- 用上面这行新终极版书签
- 点一次
- 看标签页标题变化 → 就知道它在工作
- 扔那不管,等它自己跑完几天都行
如果你想要 3 分钟一轮 而不是 5 分钟,我可以立刻给你换好一行代码。
我开始运行这个脚本了,但是我不知道它到底是否运行的成功。那么我现在如果用手动去向上滚动的话。是否会干扰这个脚本。还有就是说我如果点了两次这个书签,运行了两次这个脚本的话,它们是否会互相干扰?还是说一个脚本运行,另外一个脚本就不能运行?是否两个会同时运行呢?
我直接用最直白、最安心的话给你讲清楚,你现在完全可以放心怎么做:
1. 你手动向上滚动 → 不会干扰脚本
脚本只做一件事:
每隔 5 分钟把页面滚到最底部
你中间:
- 往上翻
- 看内容
- 点来点去
- 切窗口
- 甚至最小化
都不会影响它继续运行。
它到时间依然会自己滚到底部。
2. 如果你点了两次书签 → 两个脚本会同时跑,会互相干扰
这是唯一危险的地方。
- 你点一次 → 1 个脚本在后台循环滚动
- 你点两次 → 2 个脚本同时在滚动
- 它们会抢着滚动、互相覆盖、导致页面更卡、逻辑混乱
- 严重时 Firefox 直接卡死,你那超长对话就白等了
结论:
绝对不要点第二次!
绝对不要重复点书签!
3. 怎么判断脚本正在运行?(非常简单)
你看页面顶部有没有一个黑底白字的提示框,像这样:
plaintext
🔁 超长对话自动加载模式
每5分钟滚动一次,直到加载完毕
请勿关闭页面,等待自动结束
只要这个框 还在 → 脚本 正在正常运行。
只要这个框 消失了 → 脚本 结束 / 崩溃 / 跑完了。
4. 如果你不小心点了两次,怎么办?
最简单安全的方法:
直接刷新页面 → 重新点一次书签
一切重置,最稳。
5. 脚本运行期间你可以做什么?
✅ 可以上下滚动看内容
✅ 可以切到别的标签
✅ 可以最小化浏览器
✅ 可以离开电脑不管
✅ 可以放着跑几天几夜
❌ 不要关闭标签
❌ 不要睡眠 / 休眠电脑(会断网)
❌ 不要再点一次书签
❌ 不要刷新页面
6. 你现在最安全的状态
只要顶部那个黑框还在
→ 脚本就在每 5 分钟自动滚一次
→ 你完全不用管
→ 它会自己加载完整个超长对话
→ 最后自动保存成 HTML
如果你愿意,我可以再给你一个超级加强版:
- 运行时禁止重复启动(点多少次都只跑一个)
- 状态更明显
- 更抗崩溃
你要吗?我可以直接给你一行代码替换。