El Atributo ONDBLCLICK

Es un evento de JavaScript que se activa cuando el usuario hace doble clic sobre un elemento HTML.

El atributo ondblclick es un evento de JavaScript que se activa cuando el usuario hace doble clic (dos clics rápidos seguidos) sobre un elemento HTML. Es útil para crear interacciones avanzadas, como acciones alternativas a un clic simple, edición rápida de contenido o activación de funciones especiales.

¿Dónde se aplica?

Funciona en cualquier elemento HTML, pero es más común en:

  • <button>

  • <div> / <span>

  • <img>

  • Elementos de texto (<p>, <h1>, etc.)

  • Tablas (<td>, <tr>)

Sintaxis básica

Como atributo HTML (inline):

<button ondblclick="alert('¡Doble clic detectado!')">Haz doble clic</button>

Con JavaScript (recomendado para separar lógica):

<div id="areaEditable">Doble clic para editar</div>

<script>
  document.getElementById('areaEditable').ondblclick = function() {
    this.contentEditable = true;
    this.focus();
  };
</script>

Ejemplos prácticos

Ejemplo 1: Alternar modo oscuro

<div ondblclick="cambiarModo()" style="padding: 20px; cursor: pointer;">
  Doble clic para cambiar el tema
</div>

<script>
  function cambiarModo() {
    document.body.classList.toggle('modo-oscuro');
  }
</script>

<style>
  .modo-oscuro {
    background: #111;
    color: white;
  }
</style>

Ejemplo 2: Editor de texto rápido

<p ondblclick="activarEdicion(this)">Doble clic para editar este texto</p>

<script>
  function activarEdicion(elemento) {
    const textoOriginal = elemento.textContent;
    
    elemento.contentEditable = true;
    elemento.focus();

    // Desactivar edición al perder el foco
    elemento.addEventListener('blur', () => {
      elemento.contentEditable = false;
      if (elemento.textContent === '') {
        elemento.textContent = textoOriginal;
      }
    });
  }
</script>

Ejemplo 3: Eliminar elemento con confirmación

<div class="item" ondblclick="eliminarItem(this)">
  ????️ Doble clic para eliminar
</div>

<script>
  function eliminarItem(elemento) {
    if (confirm('¿Eliminar este elemento?')) {
      elemento.remove();
    }
  }
</script>

Diferencias clave: ondblclick vs onclick

Característica ondblclick onclick
Número de clics 2 clics rápidos 1 clic
Uso común Acciones secundarias/avanzadas Acciones primarias
Velocidad de detección Depende de la configuración del SO Inmediato

Mejores prácticas

No abuses del doble clic:

  • Usa acciones complementarias, no reemplaces funcionalidades estándar.

  • Ejemplo: Un clic selecciona un elemento, doble clic lo edita.

Accesibilidad:

Proporciona alternativas para usuarios que no puedan hacer doble clic.

<button 
  ondblclick="accionRapida()" 
  onclick="if (!event.detail || event.detail === 1) accionNormal()"
>
  Click simple o doble
</button>

Evita conflictos con el zoom:

En móviles, el doble toque puede activar el zoom. Usa meta viewport:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

Casos avanzados

Juego de memoria con cartas:

<div class="carta" ondblclick="revelarCarta(this)">
  <div class="frontal">?</div>
  <div class="trasera">????</div>
</div>

<script>
  function revelarCarta(carta) {
    if (!carta.classList.contains('girada')) {
      carta.classList.add('girada');
    }
  }
</script>

<style>
  .carta { position: relative; cursor: pointer; }
  .trasera { display: none; }
  .girada .frontal { display: none; }
  .girada .trasera { display: block; }
</style>

Menú contextual avanzado:

<div 
  class="archivo" 
  ondblclick="abrirArchivo()" 
  onclick="if (event.detail === 1) seleccionar()"
>
  Documento.txt
</div>

<script>
  let seleccionado = false;
  
  function seleccionar() {
    seleccionado = true;
    document.querySelectorAll('.archivo').forEach(f => f.style.background = '');
    this.style.background = '#e0e0e0';
  }

  function abrirArchivo() {
    if (seleccionado) {
      window.open('documento.txt');
    }
  }
</script>

Errores comunes

<!-- MAL: Usar en elementos no interactivos sin feedback -->
<div ondblclick="funcion()">Texto normal</div> <!-- El usuario no sabe que es clickeable -->

<!-- CONFUSIÓN: Ignorar el clic simple -->
<img 
  src="imagen.jpg" 
  ondblclick="ampliar()" 
  onclick="// ¿Qué hace el clic simple aquí?"
>

<!-- OLVIDAR dispositivos táctiles -->
<!-- El doble toque puede no funcionar igual que el doble clic -->

Compatibilidad

Navegador/Dispositivo Soporte Notas
Chrome ✅ Todas versiones  
Firefox ✅ Todas versiones  
Safari ✅ Sí  
Edge ✅ Sí  
Móviles ⚠️ Limitado Doble toque puede activar zoom

Cómo desactivar el evento

// Eliminar el listener específico
elemento.ondblclick = null;

// Usando removeEventListener (si se usó addEventListener)
elemento.removeEventListener('dblclick', miFuncion);

Conclusión

El atributo ondblclick es ideal para:

  • Funcionalidades avanzadas que requieren confirmación implícita.
  • Mejorar la productividad en aplicaciones web complejas.
  • Crear experiencias interactivas en juegos y editores.

Recuerda:

  1. No dependas exclusivamente del doble clic para funcionalidades críticas.
  2. Proporciona feedback visual para indicar elementos doble clickeables.
  3. Prueba en móviles y considera alternativas táctiles.

¡Ahora puedes implementar interacciones avanzadas y creativas con el doble clic!