統計
総インストール数
226
直近24時間
+0
ユーザー評価
-
広告
説明
バージョン4
評価0
権限の説明
通义千问长文本自动折叠脚本
読み込み中…
統計
総インストール数
226
直近24時間
+0
ユーザー評価
-
スクリプト詳細
適用サイト
ライセンス
未宣言
ライセンス未宣言 — 引用には注意してください
这是专为通义千问聊天页面设计的长文本自动折叠脚本,聚焦高性能、无内存泄漏、状态记忆三大核心优化。适配通义千问最新前端架构,全场景精准识别并折叠超长提问文本,彻底解决长文本占据大量屏幕空间的问题。
data-chat-list-key 属性精准定位,利用 SVG 旋转状态类名判断折叠状态,稳定性更强。data-chat-list-key$="-question" 属性选择器,精准匹配通义千问聊天页的提问项容器,避免误操作其他页面元素。qs-bottom-icon-svg-rotate 类来判断折叠状态,只处理“未折叠”项,避免重复点击。.chat-content 核心区域,并限定只监听子节点增删,大幅降低回调触发频率。localStorage 存储保存开关状态,关闭浏览器/刷新页面后仍保持上次设置,无需重复操作。确保浏览器已安装用户脚本管理器扩展:
或者手动创建新脚本,复制上述完整代码并保存至脚本管理器
https://www.qianwen.com/chat/*| 操作方式 | 功能 | 详细说明 |
|---|---|---|
| 页面加载完成 | 自动折叠长文本 | 开启状态下,自动识别并收起所有未折叠的长文本,仅针对提问项生效 |
| 点击右上角悬浮按钮 | 切换自动折叠状态 | 蓝色=开启,灰色=关闭,状态自动本地保存,点击带200ms防抖 |
| 滚动页面 | 触发折叠检查(防抖) | 滚动停止150ms后检查并折叠新出现的长文本,避免频繁触发 |
| 新增聊天内容 | 实时自动折叠 | MutationObserver监听,新增文本立即识别并折叠,无延迟 |
| 展开长文本操作 | 关闭折叠+手动展开 | 先点击右上角开关将状态切为灰色(关闭),再点击文本自身的展开按钮即可正常展开 |
注意:
- 开关按钮默认位置:右上角85px、顶部13px,可修改代码中
CONFIG.BTN_POSITION参数自定义调整位置- 首次使用默认开启自动折叠(按钮蓝色),关闭后下次打开页面仍保持关闭状态
- 自动折叠开启时,手动点击文本展开按钮无效,需先关闭折叠功能
// 核心配置参数,集中管理便于修改
const CONFIG = {
STORAGE_KEY: 'qianwen_auto_collapse_v2_enabled', // 状态本地存储键名
SWITCH_BTN_ID: 'qianwen-collapse-switch-v2', // 开关按钮唯一ID
// 新结构选择器
QUESTION_CONTAINER_ATTR: 'div[data-chat-list-key$="-question"]', // 问题容器属性选择器
BOTTOM_ICON_CONTAINER_CLASS: '.qs-bottom', // 底部操作栏类名
COLLAPSE_SVG_CLASS: '.qs-bottom-icon-svg', // 折叠图标SVG类名
ROTATED_CLASS: 'qs-bottom-icon-svg-rotate', // 旋转状态类名(表示已折叠)
SCROLL_DEBOUNCE_MS: 150, // 滚动防抖延迟(毫秒)
POLL_INTERVAL_MS: 1000, // 定时巡检间隔(毫秒)
BTN_POSITION: { top: 13, right: 85, zIndex: 9999 } // 开关按钮位置配置
};
// 1. 精准折叠核心逻辑,基于SVG旋转状态判断
function collapseUnfoldedText() {
if (!state.autoCollapseEnabled) return;
// 获取所有问题容器
const containers = document.querySelectorAll(CONFIG.QUESTION_CONTAINER_ATTR);
containers.forEach(container => {
// 定位折叠按钮的 SVG
const collapseSvg = container.querySelector(`${CONFIG.BOTTOM_ICON_CONTAINER_CLASS} ${CONFIG.COLLAPSE_SVG_CLASS}`);
if (!collapseSvg) return;
// 关键判断:如果不包含 'qs-bottom-icon-svg-rotate' 类,说明是展开状态,需要折叠
if (!collapseSvg.classList.contains(CONFIG.ROTATED_CLASS)) {
const btnParent = collapseSvg.closest('.qs-bottom-icon');
if (btnParent) {
btnParent.click(); // 模拟点击
Logger.action(`发现未折叠问题,执行点击折叠`);
}
}
});
}
// 2. 彩色日志系统
const Logger = {
info: (msg) => console.log(`%c[QW] INFO%c ${msg}`, 'background:#2c3e50;color:#fff;', 'color:#3498db;'),
action: (msg) => console.log(`%c[QW] ACTION%c ${msg}`, 'background:#2c3e50;color:#fff;', 'color:#27ae60;'),
// ... 其他级别日志
};
.chat-content 区域的关键变化A:
https://www.qianwen.com/chat/* 格式,非聊天页脚本不生效A: 这是正常现象,自动折叠开启状态下会屏蔽手动展开操作,解决方法:
A:
CONFIG 配置里的 BTN_POSITION 参数,修改 top 和 right 值:BTN_POSITION: { top: 50, right: 20, zIndex: 9999 } // 按需调整数值,单位为px
A:
CONFIG 配置里的性能参数,按需修改:SCROLL_DEBOUNCE_MS: 200, // 数值越大,滚动折叠触发越迟钝,性能越好
POLL_INTERVAL_MS: 1500, // 数值越大,定时巡检频率越低,性能越好
A: 不会,脚本仅做长文本折叠的模拟点击操作,不修改通义千问的任何原生 DOM 结构和 JS 逻辑; 关闭自动折叠功能后,通义千问所有原生操作(包括文本展开、提问、回答等)均恢复正常,无任何干扰。
data-chat-list-key 属性定位qs-bottom-icon-svg-rotate 类名精准判断折叠状态,更加稳定可靠本脚本仅供学习交流使用,请勿用于商业用途。脚本仅模拟人工点击折叠操作,未修改通义千问的任何核心功能和页面结构,使用脚本产生的一切后果由使用者自行承担。
如果您在使用过程中遇到问题或有改进建议,请通过以下方式反馈:
温馨提示: