Método confirm() de JavaScript: sintaxis, ejemplos, buenas prácticas y alternativas de diálogos personalizados

目次

1. Introducción: ¿Qué es el método confirm?

JavaScript ofrece diversas funcionalidades para interactuar con los usuarios. Entre ellas, el método confirm es una característica práctica que muestra un cuadro de diálogo de confirmación para solicitar al usuario que tome una decisión.

Este método presenta al usuario las opciones “Aceptar” o “Cancelar” y se utiliza cuando se desea ejecutar lógica distinta según la selección del usuario. Por ejemplo, es útil cuando se necesita que el usuario confirme una acción importante, como enviar un formulario o eliminar datos.

Principales casos de uso del método confirm

  1. Realizar una confirmación final antes de enviar un formulario.
  2. Mostrar una advertencia antes de eliminar archivos o datos.
  3. Presentar un cuadro de diálogo para confirmar la navegación a otra página o cancelar una operación.

Diferencias entre confirm y otros diálogos

JavaScript cuenta con los siguientes tres métodos para interactuar con los usuarios.

  • Método alert: Se usa simplemente para mostrar un mensaje. No se requiere entrada del usuario.
    alert("Warning: Your changes will not be saved!");
    
  • Método prompt: Se usa para recibir una entrada del usuario.
    let name = prompt("Please enter your name:", "Guest");
    
  • Método confirm: Solicita al usuario que elija “Aceptar” o “Cancelar”.
    let result = confirm("Are you sure you want to delete this?");
    

El método confirm es ideal cuando se quiere confirmar la intención explícita del usuario.

Comportamiento básico del método confirm

El método confirm devuelve true o false según la elección del usuario.

  • Si el usuario hace clic en “Aceptar”: true
  • Si el usuario hace clic en “Cancelar”: false

Con este sencillo mecanismo, puedes implementar fácilmente ramificaciones condicionales y manejo de errores.

Escenarios reales comunes

El método confirm resulta útil en situaciones como:

  • Confirmar “¿Seguro que deseas eliminar esto?” antes de que un usuario elimine un archivo importante.
  • Preguntar “¿Deseas enviar esto?” antes de enviar un formulario.
  • Notificar “Tienes cambios sin guardar. ¿Quieres salir de esta página?” antes de navegar fuera de ella.

Resumen

El método confirm es una característica muy útil para presentar opciones a los usuarios y confirmar acciones importantes. Como una de las funcionalidades básicas de JavaScript, se emplea ampliamente en numerosos sitios web y aplicaciones. En la siguiente sección explicaremos en detalle cómo usar este método.

2. Sintaxis básica y uso del método confirm

El método confirm es una característica simple y práctica en JavaScript para confirmar la intención del usuario. En esta sección explicaremos la sintaxis básica y cómo utilizarlo en detalle.

Sintaxis básica

let result = confirm(message);

Argumento

  • message (obligatorio): Especifica el texto que se mostrará en el cuadro de diálogo.

Valor de retorno

  • true: Se devuelve cuando se pulsa el botón “Aceptar”.
  • false: Se devuelve cuando se pulsa el botón “Cancelar”.

Ejemplo 1: Mostrar un cuadro de confirmación básico

A continuación, un ejemplo sencillo de uso del método confirm para confirmar una eliminación.

let result = confirm("Are you sure you want to delete this?");

if (result) {
    alert("Deleted.");
} else {
    alert("Canceled.");
}

Ejemplo 2: Confirmación al enviar un formulario

Aquí tienes un ejemplo que muestra un cuadro de diálogo de confirmación antes de enviar un formulario para confirmar la intención del usuario.

Código HTML:

<form id="myForm" action="/submit" method="post">
    <button type="submit">Submit</button>
</form>

Código JavaScript:

document.getElementById("myForm").addEventListener("submit", function(event) {
    let result = confirm("Are you sure you want to submit?");
    if (!result) {
        event.preventDefault(); // Cancel form submission
    }
});

Ejemplo 3: Confirmación al hacer clic en un enlace

A continuación, un ejemplo que confirma la navegación cuando el usuario hace clic en un enlace.

Código HTML:

<a href="https://example.com" id="myLink">Open link</a>

Código JavaScript:

document.getElementById("myLink").addEventListener("click", function(event) {
    let result = confirm("Do you want to leave this page?");
    if (!result) {
        event.preventDefault(); // Cancel navigation
    }
});

Notas importantes para su uso

  1. Evite el uso excesivo El método confirm puede interrumpir el flujo del usuario, por lo que usarlo con demasiada frecuencia puede reducir la UX (experiencia de usuario). Utilícelo solo cuando sea estrictamente necesario.
  2. Considere la usabilidad en dispositivos móviles En dispositivos móviles, el área del cuadro de diálogo es más pequeña, por lo que es conveniente evitar mensajes demasiado extensos y mantenerlos concisos.
  3. Considere diálogos personalizados Si necesita personalizar el diseño, evalúe la opción de crear un cuadro de diálogo propio con HTML, CSS y JavaScript en lugar de usar el método confirm. Más adelante cubriremos los detalles.

Resumen

El método confirm ofrece una forma sencilla de obtener la confirmación del usuario en JavaScript. En esta sección cubrimos todo, desde la sintaxis básica hasta ejemplos prácticos.

3. Ejemplo ①: Diálogo de confirmación al enviar un formulario

El envío de un formulario se considera una acción importante porque los usuarios pueden enviar información incorrecta sin darse cuenta. En esta sección explicamos cómo mostrar un cuadro de diálogo de confirmación antes de enviar el formulario para asegurarse de que la acción del usuario sea intencional.

Cuadro de diálogo de confirmación básico para el envío del formulario

A continuación se muestra un ejemplo sencillo que pregunta al usuario: “¿Desea enviar con este contenido?” antes de enviar el formulario.

Código HTML:

<form id="contactForm" action="/submit" method="post">
    <label for="name">Name:</label>
    <input type="text" id="name" name="name" required>
    <button type="submit">Submit</button>
</form>

Código JavaScript:

document.getElementById("contactForm").addEventListener("submit", function(event) {
    let result = confirm("Do you want to submit with this content?");
    if (!result) {
        event.preventDefault(); // Cancel submission
    }
});

Añadir una función para confirmar el contenido ingresado

A continuación se muestra un ejemplo que muestra un cuadro de diálogo confirmando lo que el usuario ingresó en el formulario.

Código HTML:

<form id="feedbackForm" action="/submit" method="post">
    <label for="email">Email address:</label>
    <input type="email" id="email" name="email" required>
    <label for="message">Message:</label>
    <textarea id="message" name="message" required></textarea>
    <button type="submit">Submit</button>
</form>

Código JavaScript:

document.getElementById("feedbackForm").addEventListener("submit", function(event) {
    let email = document.getElementById("email").value;
    let message = document.getElementById("message").value;

    let result = confirm(
        "Do you want to submit with the following content?\n\n" +
        "Email: " + email + "\n" +
        "Message: " + message
    );

    if (!result) {
        event.preventDefault(); // Cancel submission
    }
});

Verificación de errores y validación

También puede combinar la confirmación con la validación, como se muestra a continuación.

Código JavaScript:

document.getElementById("contactForm").addEventListener("submit", function(event) {
    let name = document.getElementById("name").value.trim();

    if (name === "") {
        alert("Please enter your name!");
        event.preventDefault(); // Cancel submission
        return;
    }

    let result = confirm("Do you want to submit with this content?");
    if (!result) {
        event.preventDefault(); // Cancel submission
    }
});

Notas para soporte móvil

  1. Mantenga los mensajes concisos: Dado que el espacio en pantalla es limitado en dispositivos móviles, mantenga los mensajes del cuadro de diálogo breves y claros.
  2. Minimice las acciones del usuario: Muestre la confirmación solo una vez antes del envío y diseñe el flujo de modo que no aparezca múltiples veces.

Resumen

Un cuadro de diálogo de confirmación al enviar un formulario es una característica importante que previene errores y brinda tranquilidad al usuario.

En esta sección, presentamos la lógica básica de confirmación usando el método confirm, cómo confirmar el contenido ingresado y ejemplos avanzados combinados con validación.

4. Ejemplo ②: Diálogo de Confirmación al Hacer Clic en un Enlace

Para evitar que los usuarios naveguen accidentalmente fuera de la página al hacer clic en un enlace, puedes usar el método confirm para mostrar un cuadro de diálogo de confirmación. En esta sección explicamos los métodos de implementación concretos.

Diálogo de Confirmación Básico al Hacer Clic en un Enlace

A continuación se muestra un ejemplo básico que muestra un cuadro de diálogo de confirmación preguntando “¿Realmente deseas salir de esta página?” al hacer clic en un enlace.

Código HTML:

<a href="https://example.com" id="externalLink">Go to external site</a>

Código JavaScript:

document.getElementById("externalLink").addEventListener("click", function(event) {
    let result = confirm("Do you want to leave this page? Unsaved changes may be lost.");
    if (!result) {
        event.preventDefault(); // Cancel link navigation
    }
});

Manejo de Enlaces Generados Dinámicamente

También puedes establecer un cuadro de diálogo de confirmación para los enlaces que se generan de forma dinámica.

Código HTML:

<div id="linkContainer">
    <a href="https://example.com/page1">Link 1</a>
    <a href="https://example.com/page2">Link 2</a>
</div>

Código JavaScript:

document.getElementById("linkContainer").addEventListener("click", function(event) {
    if (event.target.tagName === "A") {
        let result = confirm("Do you want to leave this page?");
        if (!result) {
            event.preventDefault(); // Cancel navigation
        }
    }
});

Manejo Separado para Enlaces Internos y Externos

Si deseas mostrar diálogos diferentes para enlaces externos e internos, puedes ramificar la lógica verificando la URL del enlace (o su clase).

Código HTML:

<a href="/internal-page.html" class="internal">Internal link</a>
<a href="https://example.com" class="external">External link</a>

Código JavaScript:

document.querySelectorAll("a").forEach(link => {
    link.addEventListener("click", function(event) {
        if (link.classList.contains("external")) {
            let result = confirm("You are about to leave for an external site. Continue?");
            if (!result) {
                event.preventDefault();
            }
        } else if (link.classList.contains("internal")) {
            let result = confirm("Do you want to leave this page? Unsaved changes may be lost.");
            if (!result) {
                event.preventDefault();
            }
        }
    });
});

Notas para Soporte Móvil

  1. Usa mensajes breves: Dado que el espacio en pantalla es limitado en dispositivos móviles, mantén los mensajes del cuadro de diálogo cortos y claros.
  2. Añade medidas de prevención de pulsaciones erróneas: Para usuarios móviles, considera agregar funcionalidades que eviten clics accidentales, como la prevención de doble toque o la prevención de pulsaciones erróneas basadas en deslizamientos.

Avanzado: Aplicar a Múltiples Enlaces a la Vez

Si deseas aplicar un cuadro de diálogo de confirmación a todos los enlaces, puedes crear un código genérico como el siguiente.

Código JavaScript:

document.querySelectorAll("a").forEach(link => {
    link.addEventListener("click", function(event) {
        let result = confirm("Do you want to open this link?");
        if (!result) {
            event.preventDefault(); // Cancel navigation
        }
    });
});

Resumen

En esta sección explicamos cómo usar el método confirm para mostrar un cuadro de diálogo de confirmación al hacer clic en enlaces.

  • Presentamos varios patrones de implementación, desde ejemplos básicos hasta manejo de enlaces dinámicos, e incluso ramificación del comportamiento para enlaces externos vs. internos.
  • El método confirm es muy eficaz para prevenir errores y mejorar la experiencia del usuario.

5. Casos de Uso y Precauciones para el Método confirm

El método confirm se usa ampliamente para solicitar a los usuarios que confirmen acciones importantes. En esta sección explicamos casos de uso comunes y puntos clave a tener en cuenta durante la implementación.

Casos de uso comunes

  1. Confirmar la eliminación de datos La eliminación accidental de datos puede causar problemas irreversibles. Usar el método confirm permite a los usuarios reconfirmar su intención y ayuda a prevenir esos accidentes. Ejemplo:
    let result = confirm("Are you sure you want to delete this data?");
    if (result) {
        alert("The data has been deleted.");
    } else {
        alert("Deletion was canceled.");
    }
    
  1. Confirmación final antes de enviar un formulario Esto ayuda a los usuarios a volver a revisar el contenido enviado y a evitar errores de entrada. Consulte los ejemplos en “3. Ejemplo ①: Diálogo de confirmación al enviar un formulario.”
  2. Advertencias al navegar fuera de la página o al salir Muestra una advertencia cuando los usuarios intentan abandonar una página con datos no guardados o durante un proceso importante. Ejemplo:
    window.addEventListener("beforeunload", function(event) {
        event.preventDefault();
        event.returnValue = "Your changes have not been saved. Do you want to leave this page?";
    });
    
  1. Confirmación de permisos para acciones Útil para solicitar confirmación antes de ejecutar funciones específicas (p. ej., imprimir o exportar). Ejemplo:
    let result = confirm("Do you want to print this report?");
    if (result) {
        window.print();
    }
    

Consideraciones importantes de implementación

1. Evitar el uso excesivo

Aunque es conveniente, el uso excesivo del método confirm puede generar estrés en los usuarios. Si los diálogos aparecen con demasiada frecuencia, los usuarios pueden acostumbrarse a hacer clic en “Aceptar” sin leer.

Contramedidas:

  • Úselo solo para acciones realmente importantes.
  • Considere diálogos personalizados para interacciones repetidas.

2. Considerar la usabilidad en dispositivos móviles

En dispositivos móviles, los diálogos confirm pueden ser difíciles de leer debido al espacio limitado de la pantalla, y los toques accidentales son más probables.

Contramedidas:

  1. Mantenga los mensajes concisos.
  2. Implemente diálogos personalizados con botones más grandes y aptos para tocar.

3. Personalización limitada

El método confirm utiliza un diálogo nativo del navegador, por lo que no puede personalizar su diseño o disposición. Para sitios centrados en la marca, se recomiendan diálogos personalizados.

Contramedidas:

  • Cree sus propias ventanas modales usando HTML + CSS + JavaScript.
  • Use bibliotecas existentes (p. ej., SweetAlert2) para diálogos con estilo.

4. Comportamiento dependiente del navegador

Aunque es compatible con todos los navegadores modernos, el comportamiento puede variar en navegadores antiguos, y los diálogos pueden bloquearse según la configuración del navegador.

Contramedidas:

  • Prepare opciones de respaldo, como diálogos personalizados.
  • Realice pruebas cruzadas de navegadores para garantizar la compatibilidad.

5. Consideraciones de seguridad

El método confirm no es una característica de seguridad. Los usuarios malintencionados pueden eludirlo manipulando scripts.

Contramedidas:

  • Combine la confirmación del lado del cliente con validación del lado del servidor para una mayor seguridad.

Resumen

El método confirm es una herramienta poderosa para solicitar la confirmación del usuario antes de ejecutar acciones importantes. Sin embargo, deben considerarse el uso excesivo, los problemas de usabilidad en móviles y la personalización limitada.

Puntos clave:

  • Defina claramente los casos de uso y mantenga el uso al mínimo.
  • Prepare mensajes concisos para usuarios móviles.
  • Use diálogos personalizados cuando se requiera flexibilidad de diseño.
  • Combine con validación del lado del servidor para mejorar la seguridad.

6. Cómo implementar diálogos personalizados (avanzado)

Aunque el método confirm es fácil de usar, tiene limitaciones en cuanto a personalización de diseño y control de disposición. Para abordar esto, esta sección explica cómo crear diálogos personalizados más flexibles y visualmente atractivos usando HTML, CSS y JavaScript.

Ventajas de los diálogos personalizados

  1. Flexibilidad de diseño Puedes personalizar colores y fuentes para que coincidan con la identidad de tu marca.
  2. Soporte para interacciones complejas Puedes añadir campos de texto o varios botones que no son posibles con el método confirm estándar.
  3. Optimización móvil sencilla Puedes crear diseños responsivos y compatibles con dispositivos móviles.

Implementación básica de un cuadro de diálogo personalizado

A continuación se muestra un ejemplo de un cuadro de confirmación personalizado sencillo.

Código HTML:

<div id="customDialog" class="dialog-overlay" style="display: none;">
    <div class="dialog-box">
        <p id="dialogMessage">Are you sure you want to delete this?</p>
        <div class="dialog-buttons">
            <button id="dialogYes">Yes</button>
            <button id="dialogNo">No</button>
        </div>
    </div>
</div>
<button id="deleteButton">Delete</button>

Código CSS:

.dialog-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 9999;
}

.dialog-box {
    background: white;
    padding: 20px;
    border-radius: 8px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    width: 300px;
    text-align: center;
}

.dialog-buttons {
    margin-top: 20px;
    display: flex;
    justify-content: center;
    gap: 10px;
}

.dialog-buttons button {
    padding: 10px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}

#dialogYes {
    background: #007BFF;
    color: white;
}

#dialogNo {
    background: #6c757d;
    color: white;
}

Código JavaScript:

document.getElementById("deleteButton").addEventListener("click", function () {
    showDialog("Are you sure you want to delete this?", function (confirmed) {
        if (confirmed) {
            alert("The data has been deleted.");
        } else {
            alert("Deletion was canceled.");
        }
    });
});

function showDialog(message, callback) {
    const dialog = document.getElementById("customDialog");
    const dialogMessage = document.getElementById("dialogMessage");
    const yesButton = document.getElementById("dialogYes");
    const noButton = document.getElementById("dialogNo");

    dialogMessage.textContent = message;
    dialog.style.display = "flex";

    yesButton.onclick = function () {
        dialog.style.display = "none";
        callback(true);
    };

    noButton.onclick = function () {
        dialog.style.display = "none";
        callback(false);
    };
}

Extensión de cuadros de diálogo personalizados

  1. Añadir campo de texto Añade campos de entrada como el método prompt para recopilar la información del usuario.
  2. Añadir animaciones Utiliza animaciones CSS para aplicar efectos de desvanecimiento o deslizamiento al mostrar u ocultar los diálogos.
  3. Usar bibliotecas Si implementar desde cero lleva mucho tiempo, considera usar bibliotecas:
  • SweetAlert2 Una biblioteca de diálogos moderna y elegante. Sitio oficial
  • Bootstrap Modal Funcionalidad de diálogos proporcionada por el framework Bootstrap.

Consejos para la optimización móvil

  1. Aplicar diseño responsivo Ajusta el tamaño y la posición del diálogo según el tamaño de la pantalla.
  2. Diseñar botones táctiles amigables Aumenta el tamaño de los botones para evitar toques accidentales en dispositivos táctiles.

Resumen

Los diálogos personalizados ofrecen diseños y funcionalidades flexibles que no pueden lograrse con el método confirm.

Puntos clave:

  • Utiliza diálogos personalizados cuando necesites flexibilidad de diseño o funcionalidad.
  • Combina HTML, CSS y JavaScript para crear diálogos totalmente personalizables.
  • Aprovecha bibliotecas para mejorar la eficiencia del desarrollo.

7. Preguntas frecuentes (FAQ): Resolviendo problemas comunes del método confirm

En esta sección abordamos preguntas y problemas habituales que los lectores suelen tener sobre el método confirm, junto con soluciones prácticas.

P1. ¿Por qué el método confirm no funciona?

Causa 1: Errores de JavaScript
Si hay errores de sintaxis o errores tipográficos en tu código, el método confirm no funcionará correctamente.

Solución:
Revisa los mensajes de error en las herramientas de desarrollo del navegador (abre con F12) y corrige el código.

Ejemplo:

let result = confirm("Do you want to perform this action?");

Q2. ¿Puedo cambiar el diseño del cuadro de diálogo confirm?

Respuesta: No.
El método confirm utiliza un cuadro de diálogo nativo del navegador, por lo que no puedes personalizar su estilo ni su diseño.

Solución: Crear un cuadro de diálogo personalizado
Consulta los ejemplos en “6. How to Implement Custom Dialogs (Advanced)” para crear un cuadro de diálogo que coincida con tu diseño.

Q3. ¿Por qué el método confirm se comporta de manera diferente en dispositivos móviles?

Causa: Comportamiento dependiente del navegador y del sistema operativo
En los navegadores móviles, los cuadros de diálogo confirm pueden verse o comportarse de manera distinta a las versiones de escritorio.

Solución:

  1. Mantén los mensajes breves y concisos.
  2. Utiliza cuadros de diálogo personalizados con botones adaptados al tacto.

Q4. ¿Por qué el texto japonés se muestra corrupto en los cuadros de diálogo confirm?

Causa: Problemas de codificación de caracteres
Si el archivo HTML o el servidor no están configurados con la codificación de caracteres correcta, el texto puede aparecer corrupto.

Solución:
Establece la codificación de caracteres a UTF-8 añadiendo lo siguiente al encabezado de tu HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>

Q5. ¿Puedo implementar una funcionalidad similar sin usar confirm?

Respuesta: Sí.
Dos alternativas comunes son:

  1. Cuadros de diálogo personalizados (HTML + CSS + JavaScript)
  2. Uso de bibliotecas externas
  • Ejemplo con SweetAlert2:
    Swal.fire({
        title: "Are you sure you want to delete this?",
        text: "This action cannot be undone.",
        icon: "warning",
        showCancelButton: true,
        confirmButtonText: "Yes",
        cancelButtonText: "No"
    }).then((result) => {
        if (result.isConfirmed) {
            alert("Deleted!");
        }
    });
    

Q6. ¿Cómo puedo usar el resultado de confirm fuera de una función?

Respuesta: Usa callbacks o Promises.

Ejemplo 1: Usando un callback

function confirmAction(message, callback) {
    let result = confirm(message);
    callback(result);
}

confirmAction("Proceed?", function(response) {
    if (response) {
        alert("Executed!");
    } else {
        alert("Canceled!");
    }
});

Ejemplo 2: Usando una Promise

function confirmAsync(message) {
    return new Promise((resolve) => {
        let result = confirm(message);
        resolve(result);
    });
}

confirmAsync("Proceed?").then((confirmed) => {
    if (confirmed) {
        alert("Executed!");
    } else {
        alert("Canceled!");
    }
});

Resumen

Esta sección cubrió preguntas comunes y soluciones relacionadas con el método confirm.

Puntos clave:

  1. Si se requiere personalización, usa cuadros de diálogo personalizados o bibliotecas externas.
  2. Cuando no funciona, verifica errores de JavaScript y problemas con los listeners de eventos.
  3. Un soporte móvil adecuado y la codificación de caracteres correcta mejoran la experiencia del usuario.

8. Conclusión: Uso eficaz del método confirm

En este artículo, exploramos en detalle el método confirm de JavaScript, desde su uso básico hasta ejemplos prácticos, técnicas de personalización y respuestas a preguntas comunes. En esta sección final, resumimos los puntos clave para un uso eficaz.

1. Rol principal del método confirm

El método confirm ofrece un cuadro de diálogo sencillo que solicita a los usuarios elegir “Aceptar” o “Cancelar”.

Objetivos principales:

  • Confirmar acciones importantes (eliminación de datos, envíos)
  • Mostrar advertencias durante la navegación de la página
  • Realizar verificaciones finales para evitar errores

2. Ejemplos prácticos y uso avanzado

  • Confirmación al enviar un formulario
  • Confirmación al hacer clic en un enlace
  • Uso avanzado con cuadros de diálogo personalizados

3. Puntos importantes al usar confirm

  1. Evita el uso excesivo para preservar la experiencia del usuario.
  2. Considera la usabilidad móvil con mensajes concisos.
  3. Utiliza diálogos personalizados o bibliotecas cuando se requiera flexibilidad de diseño.
  4. Combínalo con validación del lado del servidor para mayor seguridad.

4. Elegir entre confirm y diálogos personalizados

Usa confirm cuando:

  • Necesites una confirmación rápida y sencilla.
  • No se requiera una personalización especial del diseño.

Usa diálogos personalizados cuando:

  • La marca y la flexibilidad de diseño son importantes.
  • Se necesiten interacciones avanzadas (entradas, múltiples opciones).

Resumen final

El método confirm es un elemento fundamental de la interacción del usuario en JavaScript. Su simplicidad lo hace adecuado tanto para principiantes como para profesionales.

Puntos clave:

  • Utiliza los diálogos de confirmación de manera reflexiva para acciones importantes.
  • Mejora la funcionalidad y el diseño con diálogos personalizados cuando sea necesario.
  • Diseña flujos de confirmación que no interrumpan la experiencia del usuario.
広告