← 全部文章

指南

JustZix vs Tampermonkey / Greasemonkey —— 有何不同、谁胜出、何时选哪个

Tampermonkey 15 年来一直是「用户脚本」的代名词。当有人说「我往页面里注入 JS」,他大概默认想的是 Tampermonkey。JustZix 做 Tampermonkey 做的一切,外加用户样式(像 Stylus),外加一个用户脚本没有的 UI 层。本文展示我们的不同之处。

功能对比

功能TampermonkeyGreasemonkeyJustZix
URL 匹配时注入 JS✓(头部里的 @match)✓(@include)✓(scope.url)
注入 CSS~(通过 GM_addStyle)~(通过 GM_addStyle)✓(专门的 CSS 规则)
标签页里的实时编辑器✓(CSS pane + JS pane)
标签页里的 REPL✓(JS Console)
带 UI 按钮的动作栏~(GM_registerMenuCommand —— 在扩展弹窗里)~✓(页面上可见的 6 种动作)
通过 URL 分享~(导出为 .user.js)~(导出)✓(TTL 1-48h 链接)
多设备同步✓(Tampermonkey Cloud —— 付费)✓(chrome.storage.sync,免费)
开源~(免费版,但 Tampermonkey 是闭源)✓(Greasemonkey GPL)✓(MIT)
@require 外部脚本~(在 JS 规则里 fetch)
GM_xmlhttpRequest(绕过 CORS)~(原生 fetch,受 CORS 限制)
脚本市场greasyfork.orggreasyfork.org不适用(TTL 分享链接)

Tampermonkey 胜出的地方

JustZix 胜出的地方

把 3 个典型用户脚本迁移到 JustZix

脚本 1:「自动跳过 cookie 横幅」

Tampermonkey 用户脚本:

// ==UserScript==
// @name     Cookie skip
// @match    *://*/*
// @run-at   document-end
// ==/UserScript==
(function() {
  const obs = new MutationObserver(() => {
    const accept = [...document.querySelectorAll('button')]
      .find(b => /accept all/i.test(b.textContent));
    if (accept) { accept.click(); obs.disconnect(); }
  });
  obs.observe(document.body, {childList: true, subtree: true});
})();

JustZix 迁移:

  1. 新文件夹「Auto-actions」
  2. 新规则「Cookie skip」,作用域:*://*/*
  3. JS 标签页:粘贴函数主体(不带 IIFE 包装器,不带用户脚本头部)
  4. Run-at:JustZix 默认用「document-end」—— 匹配
  5. 保存

脚本 2:「GitHub:复制 SHA」

Tampermonkey 用户脚本在提交哈希旁边加一个「复制 SHA」按钮。JustZix:

脚本 3:「Reddit:隐藏广告」

Tampermonkey 用户脚本隐藏 .promoted 元素。JustZix:

CSS 优先的模式往往比 JS observer 简单。

迁移的坑

接下来做什么

安装 JustZix —— Tampermonkey 可以并行存在。试 2 周,看哪个留下。

为这篇文章评分

暂无评分 — 成为第一个。

自己动手试试

安装 JustZix,粘贴本文中的任意代码片段。两分钟,从零到一条在你所有设备上生效的规则。

获取 JustZix

功能 · 工作原理 · 示例 · 应用场景