Cerrar la ventana emergente de Elementor con JavaScript

2 minutos de lectura

Tengo una ventana emergente creada con Elementor que reproduce un video cuando se abre. Estoy tratando de cerrarlo después de que el video haya terminado (digamos 90 segundos), pero no puedo encontrar cómo cerrar un elemento o una ventana emergente con Javascript.

He intentado algo como esto https://github.com/elementor/elementor/issues/7085pero como no es una acción de clic, solo una función de espera y cierre, no creo que pueda hacer que funcione.

Cualquier dirección sería útil. Gracias.

Opción 1: cierre con retraso de tiempo

setTimeout(
   function(){
      document.querySelector('.dialog-close-button').click();
   }, 90000);
);

Opción 2: cerrar cuando ended se activa el evento (ver https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/ended_event)

nota: este es un cierre codicioso: hará clic en el botón de cerrar en cualquier ventana emergente abierta, pero a menos que tenga varias ventanas emergentes, ¿a quién le importa?

const video = document.querySelector('video');

video.addEventListener('ended', (event) => {
  document.querySelector('.dialog-close-button').click();
});

Opción menos codiciosa – si desea apuntar a cerrar una ventana emergente específica, asigne a su ventana emergente una clase como DATPOPUP en ⚙ > Avanzado, luego usa este código:

const video = document.querySelector('video');

video.addEventListener('ended', (event) => {
  document.querySelector('.DATPOPUP .dialog-close-button').click();
});

También tenga en cuenta: en su código, hizo referencia .close-button como selector de clase para el botón de cierre. No estoy seguro de si las cosas cambiaron en los últimos meses, pero el Elementor Pro actual le da a este elemento la clase. .dialog-close-button.

Los chicos de elementor me dieron esto:

jQuery( document ).ready(function($){
$(document).on('click','.elementor-location-popup a', function(event){
    elementorProFrontend.modules.popup.closePopup( {}, event);
}) });

Espero que te funcione.

Todavía no he encontrado ninguna llamada específica de Elementor, pero pude ir de manera súper simple y simplemente simular un clic en el botón de cerrar después de 90 segundos.

setTimeout(
   function(){
      document.querySelector('.close-button').click();
   }, 90000);
);

Me encantaría saber de una forma mejor (adecuada) de hacer esto, pero si alguien está buscando una solución rápida similar, esto funciona.

¿Ha sido útil esta solución?