← Todos los artículos

API y helpers

Escribir reglas JS que sobreviven a los cambios del DOM

Has escrito una regla, funcionó una semana, hoy se ha detenido. La página no se ha roto — solo ha renombrado una clase de .btn-primary a .Button_primary_x7f3. Aquí está cómo escribir reglas que sobreviven a cambios así.

Por qué se rompen las reglas

Una regla se aferra al DOM de una página que no controlas. Cada restyling, cada build con un nuevo hash de clase, cada test A/B puede mover el terreno bajo tus pies. No puedes eliminarlo — puedes limitarlo.

Regla 1 — apunta a lo que es estable

Selectores del más al menos duradero:

Regla 2 — apunta con el texto cuando las clases fallan

El texto visible para el usuario cambia menos a menudo que las clases CSS. En lugar de capturar un botón por clase, encuéntralo por contenido:

const btn = [...document.querySelectorAll('button')]
  .find(b => /guardar|enviar|save|submit/i.test(b.textContent || ''));

Regla 3 — comprueba siempre que el elemento exista

Una regla que presume que un elemento está ahí explotará el día en que falte — y a menudo matará el resto de su propio código. Escribe de forma defensiva:

const el = document.querySelector('.target');
if (el) {
  // trabajo aquí
}

El operador ?. lo hace de forma concisa: document.querySelector('.target')?.remove() no hace nada cuando el elemento está ausente — en lugar de lanzar un error.

Regla 4 — deja que la regla grite cuando se pierde

El fallo peor es uno silencioso — la regla no funciona y no sabes por qué. Añade una señal:

const el = document.querySelector('.target');
if (!el) JUSTZIX.warn('Regla X: .target no encontrado — ¿página cambiada?');

Una entrada en la Output Console te dice enseguida que es hora de corregir el selector — en lugar de adivinar.

Mira también

Instala JustZix — y escribe reglas que no se rompen en el próximo deploy de la página.

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