← Todos los artículos

Tipos de acciones

BUTTON: la acción JustZix más simple — fire-and-forget con personalización por botón

Un tipo de acción es tan básico que se omite en los artículos. BUTTON — clic → ejecuta código → hecho. Sin estado, sin memory, sin lista de opciones que elegir. Es una «función sin estado» en la barra de acciones. Pero precisamente esa simplicidad es lo que lo hace el más potente: BUTTON es el 80% de todas las acciones en un setup JustZix típico, porque la mayoría de las cosas que quieres hacer son «clic = X».

¿Cuándo BUTTON, cuándo otra cosa?

NecesidadTipo de acción¿Memory?
«Clic = ejecuta X»BUTTONNo
«Elige una de N opciones»SELECT
«Escribe texto y ejecuta»INPUT
«Conserva un borrador / notas»TEXTAREA
«Controla un rango 0-100»SLIDER
«3 estados conocidos (Dev/Stg/Prod)»TOGGLE3

Solo BUTTON es sin estado. Todos los demás tipos conservan un valor por action.id (sessionStorage + backup chrome.storage.local). BUTTON = función pura: input (clic) → output (efecto en la página).

Primera acción BUTTON

En el editor de JustZix → regla → barra de acciones → «+ BUTTON». Configuración:

label: "🚀 Rellenar demo"   // texto del botón + icono
code: |
  // value, $el, $action inyectados automáticamente como 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('Datos demo rellenados.');

Clic «🚀 Rellenar demo» → campos del formulario rellenados, el framework de la página (React/Vue/Angular) ve el evento input → estado actualizado.

Dos colores + customStyles

BUTTON tiene 2 colores de base:

color       → fondo del botón
colorText   → color del texto de la label (y del icono si es emoji)

Además un objeto customStyles opcional — override CSS granular:

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

Renderizado: cada propiedad de customStyles pasa por el.style.setProperty(key, value, 'important') — vence las reglas por defecto de JustZix. Esto te permite alinear los botones al estilo de marca del sitio que estás modificando (p. ej. azul Bootstrap, ripple Material Design, personalización por dominio).

Qué está disponible en el campo del código

El código BUTTON corre en el MAIN world (chrome.scripting.executeScript world:'MAIN') mediante background.js. Automáticamente disponible:

Caso de uso 1 — Cadenas rápidas

Las secuencias de acciones repetidas a menudo pueden automatizarse con un solo botón:

// Acción «🔥 Flujo de prueba»
JZ.click('Login');               // pulsa la acción BUTTON con label «Login»
await new Promise(r => setTimeout(r, 500));
JZ.click('Añadir al carrito');
await new Promise(r => setTimeout(r, 500));
JZ.click('Checkout');
JUSTZIX.log('Flujo de prueba completado.');

Cadena de 3 botones en 1 → pulsar «Flujo de prueba» los arranca en secuencia. Cada uno de los 3 sub-botones sigue siendo reutilizable individualmente.

Caso de uso 2 — Ejecución condicional

BUTTON es «ejecuta a demanda», así que es perfecto para scripts destructivos con un guarda de URL:

// Acción «🗑️ Vaciar carrito staging»
if (!location.hostname.includes('staging')) {
  JUSTZIX.error('¡Solo en staging! Cancelando.');
  alert('Este botón funciona solo en staging.');
  return;
}
const items = document.querySelectorAll('.cart-item .remove-btn');
items.forEach(btn => btn.click());
JUSTZIX.log(`${items.length} artículos vaciados.`);

Sin riesgo de auto-run (como el JS pane), sin campo de texto que rellenar a mano — solo un clic cuando quieres, donde quieres.

Caso de uso 3 — Feedback visual tras el clic

Viejo clásico: un botón que cambia de label al éxito:

// Acción «💾 Guardar estado»
const oldLabel = $el.textContent;
$el.textContent = '⏳ Guardando...';
$el.style.opacity = '0.6';
try {
  await fetch('/api/state', {
    method: 'POST',
    body: JSON.stringify(getState()),
  });
  $el.textContent = '✓ Guardado';
  setTimeout(() => {
    $el.textContent = oldLabel;
    $el.style.opacity = '';
  }, 2000);
} catch (e) {
  $el.textContent = '✗ Error';
  JUSTZIX.error('Guardado fallido', e);
}

$el es la referencia DOM del botón — modifícala directamente. Feedback visual sin estado externo.

Caso de uso 4 — Varios botones, un flujo

En lugar de un botón «Flujo QA completo», 5 separados en un clúster visual:

// Acción «1️⃣»
JUSTZIX.log('Paso 1: login');
JZ.click('Login as test user');

// Acción «2️⃣»
JUSTZIX.log('Paso 2: navegar');
location.href = '/admin/orders';

// Acción «3️⃣»
JUSTZIX.log('Paso 3: filtrar');
document.querySelector('select.status').value = 'pending';
document.querySelector('select.status').dispatchEvent(new Event('change'));

Cada paso como botón separado → el usuario ve visualmente en qué punto está del flujo. Además puede repetir cualquier paso sin volver a empezar.

Trampas

Qué hacer después

BUTTON es la columna vertebral de todas las toolbars JustZix. Mira también los demás tipos de acción:

Instala JustZix — completamente gratuito, sin cuenta, sin servidor.

Valora este artículo

Sin valoraciones — sé el primero.

Pruébalo tú mismo

Instala JustZix y pega cualquier snippet de este artículo. Dos minutos de cero a una regla funcionando en todos tus dispositivos.

Obtener JustZix

Funciones · Cómo funciona · Ejemplos · Casos de uso