Tampermonkey 脚本列表排序与执行顺序调整
脚本装多了以后,两件事开始变得重要:列表怎么排(找脚本快)和执行顺序谁先谁后(功能不冲突)。这两件事经常被混为一谈,实际是两套机制。
列表排序:给人看的
管理面板的脚本列表支持按列排序,官方描述为「可以看到脚本上次更新时间、有没有主页,可以排序等」:
- 点列表头部的列名(名称、版本、上次更新等)切换排序方式;
- 配合搜索框按名称/描述过滤;
- 找脚本、盘点更新时间时用这个,纯视觉辅助,不影响运行。
执行顺序:给机器定的
页面上多个脚本同时命中时,注入顺序决定谁先跑:
- 执行顺序由脚本列表的排列顺序决定(管理面板里脚本条目的先后);
- 需要调整时,拖动脚本条目改变位置,靠前的先执行;
- 顺序差异只在「多个脚本操作同一块页面」时有意义:比如一个脚本往页面加按钮、另一个脚本负责挪按钮位置,加按钮的必须先跑。
顺序相关的常见坑
- DOM 就绪时机:脚本各自声明
@run-at,注入时机不同会盖过顺序的作用——先注入的脚本如果等 DOM 就绪才动手,可能晚于后注入的脚本,见注入时机; - iframe 命中:同一脚本可能在主页面和 iframe 里各跑一次,与顺序无关,见性能优化;
- 互相覆盖:两个脚本改同一个元素,后跑的覆盖先跑的——排查这类冲突先在弹出菜单里逐个停用,方法见菜单启停脚本。
什么时候需要调顺序
绝大多数脚本互不干扰,默认顺序即可。出现以下情况再动手:
- 明确出现「A 的效果被 B 撤销」的现象;
- 脚本作者在说明里要求配合特定顺序;
- 自己写的组合脚本链依赖先后关系。