← 全部文章

操作类型

BUTTON:最简单的 JustZix 动作 —— 触发即忘,支持按钮级个性化

有一种动作类型基础到在文章里都被略过。BUTTON —— 点击 → 执行代码 → 完成。没有状态、没有 memory、没有要选的选项列表。它是动作栏里一个「无状态函数」。但正是这种简单让它最强大:BUTTON 是一个典型 JustZix 配置里全部动作的 80%,因为你想做的大多数事情都是「点击 = X」。

何时用 BUTTON,何时用别的?

需求动作类型有 memory?
「点击 = 执行 X」BUTTON
「从 N 个选项里选一个」SELECT
「打字然后执行」INPUT
「保存一份草稿 / 笔记」TEXTAREA
「控制一个 0-100 的范围」SLIDER
「3 个已知状态(Dev/Stg/Prod)」TOGGLE3

只有 BUTTON 是无状态的。所有其他类型都按 action.id 保存一个值(sessionStorage + chrome.storage.local 备份)。BUTTON = 纯函数:输入(点击)→ 输出(对页面的影响)。

第一个 BUTTON 动作

在 JustZix 编辑器里 → 规则 → 动作栏 → 「+ BUTTON」。配置:

label: "🚀 填入演示数据"   // 按钮文字 + 图标
code: |
  // value、$el、$action 作为 extra 自动注入
  document.querySelector('[name=email]').value = 'demo@test.com';
  document.querySelector('[name=name]').value = 'Demo User';
  document.querySelectorAll('input, textarea').forEach(el =>
    el.dispatchEvent(new Event('input', { bubbles: true }))
  );
  JUSTZIX.log('演示数据已填入。');

点击「🚀 填入演示数据」→ 表单字段被填上,页面框架(React/Vue/Angular)看到 input 事件 → 状态更新。

两种颜色 + customStyles

BUTTON 有 2 种基础颜色:

color       → 按钮的背景
colorText   → label 文字的颜色(如果是 emoji 也包括图标)

此外有一个可选的 customStyles 对象 —— 细粒度的 CSS 覆盖:

customStyles: {
  padding: '8px 16px',         // 默认 6px 12px
  fontSize: '14px',             // 默认 12px
  borderRadius: '4px',          // 默认 6px
  fontFamily: 'Fira Code, monospace',
  fontWeight: '600',
  letterSpacing: '0.5px',
}

渲染:customStyles 的每个属性都经过 el.style.setProperty(key, value, 'important') —— 胜过 JustZix 的默认规则。这让你能把按钮和你正在修改的网站的品牌风格对齐(例如 Bootstrap 蓝、Material Design 涟漪、按域名个性化)。

代码字段里有什么可用

BUTTON 代码通过 background.js 在 MAIN world 里运行(chrome.scripting.executeScript world:'MAIN')。自动可用:

使用场景 1 —— 快速链

经常重复的动作序列往往可以由单个按钮自动化:

// 动作「🔥 测试流程」
JZ.click('Login');               // 点击 label 为「Login」的 BUTTON 动作
await new Promise(r => setTimeout(r, 500));
JZ.click('加入购物车');
await new Promise(r => setTimeout(r, 500));
JZ.click('Checkout');
JUSTZIX.log('测试流程完成。');

3 个按钮链合一 → 点击「测试流程」让它们依次启动。3 个子按钮中的每一个仍然可单独复用。

使用场景 2 —— 条件执行

BUTTON 是「按需执行」,所以非常适合带 URL 守卫的破坏性脚本:

// 动作「🗑️ 清空 staging 购物车」
if (!location.hostname.includes('staging')) {
  JUSTZIX.error('仅限 staging!取消。');
  alert('这个按钮只在 staging 上工作。');
  return;
}
const items = document.querySelectorAll('.cart-item .remove-btn');
items.forEach(btn => btn.click());
JUSTZIX.log(`已清空 ${items.length} 件商品。`);

没有自动运行的风险(不像 JS pane),没有要手动填的文本字段 —— 只是在你想要时、你想要的地方点一下。

使用场景 3 —— 点击后的视觉反馈

老经典:一个在成功时改变 label 的按钮:

// 动作「💾 保存状态」
const oldLabel = $el.textContent;
$el.textContent = '⏳ 保存中...';
$el.style.opacity = '0.6';
try {
  await fetch('/api/state', {
    method: 'POST',
    body: JSON.stringify(getState()),
  });
  $el.textContent = '✓ 已保存';
  setTimeout(() => {
    $el.textContent = oldLabel;
    $el.style.opacity = '';
  }, 2000);
} catch (e) {
  $el.textContent = '✗ 错误';
  JUSTZIX.error('保存失败', e);
}

$el 是按钮的 DOM 引用 —— 直接修改它。无需外部状态的视觉反馈。

使用场景 4 —— 多个按钮,一个流程

与其用一个「完整 QA 流程」按钮,不如在一个视觉簇里用 5 个独立的:

// 动作「1️⃣」
JUSTZIX.log('步骤 1:登录');
JZ.click('Login as test user');

// 动作「2️⃣」
JUSTZIX.log('步骤 2:导航');
location.href = '/admin/orders';

// 动作「3️⃣」
JUSTZIX.log('步骤 3:过滤');
document.querySelector('select.status').value = 'pending';
document.querySelector('select.status').dispatchEvent(new Event('change'));

每个步骤作为一个独立按钮 → 用户在视觉上看到自己在流程里走到哪一步了。此外他可以重复任意步骤而无需从头开始。

接下来做什么

BUTTON 是所有 JustZix 工具栏的脊梁。另见其他动作类型:

安装 JustZix —— 完全免费,无需账号,没有服务器。

为这篇文章评分

暂无评分 — 成为第一个。

自己动手试试

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

获取 JustZix

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