使用 JavaScript 关闭 Elementor 弹出窗口

Close Elementor Popup with JavaScript

我有一个用 Elementor 创建的弹出窗口,打开时会播放视频。我试图让它在视频结束后关闭(比如 90 秒),但我找不到如何使用 Javascript.

关闭元素或弹出窗口

我试过类似这样的东西 https://github.com/elementor/elementor/issues/7085,但由于它不是点击操作,只是等待和关闭功能,我认为我无法让它工作。

任何方向都会有所帮助。谢谢。

我仍然没有找到任何特定于 Elementor 的调用,但我能够非常简单地模拟 90 秒后点击关闭按钮。

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

我很想听听更好(正确)的方法来做到这一点,但如果有人正在寻找类似的热修复程序,这很有效。

选项 1 - 延时关闭

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

选项 2 - 在触发 ended 事件时关闭(参见 https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/ended_event

注意:这是一个贪婪的关闭 - 它会点击任何打开的弹出窗口上的关闭按钮,但除非你有多个弹出窗口,否则谁在乎呢?

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

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

Less greedy option - 如果你想关闭一个特定的弹出窗口,给你的弹出窗口一个 class 比如 DATPOPUP in ⚙ > Advanced,然后使用此代码:

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

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

另请注意:在您的代码中,您将 .close-button 引用为关闭按钮的 class 选择器。不确定最近几个月情况是否发生了变化,但当前的 Elementor Pro 为该元素提供了 class .dialog-close-button.