我的 Scriptio 用户脚本。
输入框占位符显示一言,窗口隐藏或占位符不可见时不会刷新。实时响应。
Hook Vue 实例,使得可以通过 el.__VUE__
获取此元素所挂载的 Vue 实例,使用方法见代码注释。依赖此脚本的常用代码模板:
// ==UserScript==
// @name <脚本名称>
// @description <脚本的简要说明>,需要 hook-vue.js 的支持
// @run-at <脚本启用页面>
// @reactive <false/true>
// @version <版本号>
// @homepageURL <脚本的主页>
// @author <作者>
// @license <许可证>
// ==/UserScript==
(function () {
let enabled = false;
function process(component) {
const el = component?.vnode?.el;
// if (!el?.classList?.contains("message")) return; // 若仅需处理消息,可使用此行
// <处理逻辑>
}
function enable() {
if (enabled) return;
window.__VUE_MOUNT__.push(process);
// <启用脚本的额外工作>
enabled = true;
}
function disable() {
if (!enabled) return;
const index = window.__VUE_MOUNT__.indexOf(process);
if (index > -1) {
window.__VUE_MOUNT__.splice(index, 1);
}
// <禁用脚本的额外工作>
enabled = false;
}
if (window.__VUE_MOUNT__) {
enable();
} else {
window.addEventListener("vue-hooked", enable, { once: true });
}
scriptio_toolkit.listen((v) => {
v ? enable() : disable();
}, false);
// scriptio_toolkit.listen(toggleFunc: Function, immediate: Boolean)
// 参见 https://github.com/PRO-2684/Scriptio/wiki/4.-%E7%94%A8%E6%88%B7%E8%84%9A%E6%9C%AC%E5%BC%80%E5%8F%91#%E5%93%8D%E5%BA%94%E6%80%A7%E8%84%9A%E6%9C%AC
})();
注意:可能与其他插件的类似功能冲突!
Hook fetch
函数,从而可以通过 window.__FETCH_HOOKS_BEFORE__
和 window.__FETCH_HOOKS_AFTER__
添加请求前和请求后的处理函数。使用方法见代码注释。
查看图片时,单击窗口任意位置 (除功能按钮外) 即可关闭图片查看器。(类似于旧版本 QQ/微信)
添加各类提示信息,Ctrl+Click 可复制,包括:
- 消息发送者的昵称、备注与 QQ 号
- 鼠标悬停在头像时显示
- 由于 QQ 的懒加载机制,可能部分非空字段也不会显示
- 被艾特的 QQ 号
- 表情/表情包/图片的摘要、长宽
- 允许保存表情包 (拖拽到保存位置即可)
- 图片文件名、尺寸、占用大小以及网址
- 视频文件名、时长以及占用大小
- 红包领取信息
- 语音消息的时长、占用大小以及转文字结果(若有)
- 小程序/卡片分享的摘要
- Shift+Click 可复制小程序/卡片分享的代码
- 群公告展示完整内容
- 建群成功提示中的群号
- 各类灰字提示中的 QQ 号
- 撤回提示
- 红包提示
- 群成员变动提示
- 禁言提示
- 撤回提示补全“自定义撤回消息”
- 查看过期的引用消息的发送者与时间
- 通话信息的时长 (精确到毫秒)
- 聊天列表:最近消息的文字内容、完整联系人名与 QQ 号、未读消息数
- 资料卡精确点赞数
链接预览:鼠标经过链接时尝试加载浏览,悬浮显示链接的标题和描述,需要 hook-vue.js 的支持。关闭/打开需要切换一次聊天窗口/重新进入聊天记录才能生效。
查看转发的聊天记录中已知的和引用消息发送者 QQ,需要 hook-vue.js 的支持。鼠标悬浮在头像/引用消息的发送者昵称上时显示 QQ 号,双击可复制。关闭/打开需要重新进入聊天记录才能生效。
小程序若可行则浏览器打开。
原理:
- 若点击的小程序是已知可在浏览器打开的,则模拟右键,随后点击“使用浏览器打开”
- 目前收集到的可在浏览器打开的:
com_tencent_miniapp_01
(Bilibili 分享?)
- 目前收集到的可在浏览器打开的:
- 若失败,则退回至左键
编辑框内按下 Ctrl+P 后,自动在中英文、中文与数字之间添加空格,并进行合适的标点符号处理。(改编自 Pangu.js)
保护你的隐私:通过拦截对特定域名的请求,从而阻止 QQ 的一些追踪行为,需要 hook-fetch.js 的支持。此脚本仅能阻止渲染层的追踪,无法阻止主进程的追踪。目前已知可以阻止的域名:
otheve.beacon.qq.com
tpstelemetry.tencent.com
h.trace.qq.com
report.gamecenter.qq.com
此脚本仅能拦截前三个,因为最后一个域名通常是主进程请求的。关于如何拦截列出的所有域名,详见 此 Gist。
Note
您仍有可能在 chii DevTools 中看到一些 pending 的追踪请求,这是因为 chii DevTools 的工作方式,实际上用 Fiddler 等抓包工具可以得知它们确实被拦截了。
允许接龙自己的消息,需要 hook-vue.js 的支持
添加常用快捷键,包括:
F5
刷新当前页面Esc
关闭当前页面Enter
聚焦到输入框(主页面)Ctrl+,
打开设置页面(若装有hook-vue.js
或其它插件有类似功能,则尝试调用内部的打开设置函数,否则通过模拟点击打开)Ctrl+Tab
聊天与联系人界面切换
同时,修复鼠标侧键,从而进行前进与后退。(button
为 3 时,模拟后退;为 4 时,模拟前进)
消息后显示时间,鼠标悬停显示详细时间与消息序列号,双击复制时间戳,需要 hook-vue.js 的支持。关闭/打开可能需要切换一次聊天窗口/上下滚动几屏才能生效。
为页面间导航添加平滑过渡动画。
允许其它脚本调用 scriptio_toolkit.toast,需要 hook-vue.js 的支持。