【问题标题】:Display alert an alert to a page at a set Time of day在一天中的设定时间向页面显示警报
【发布时间】:2021-08-26 19:29:48
【问题描述】:

是否可以将警报消息设置为在页面上的特定时间显示?即如果用户在页面上/EventStart.html,则在上午 8:10 显示警报

在网站页眉中

var info = document.getElementById("info");
info.addEventListener("click", ()=>{
  cuteAlert({
      type: "info",
      brand: "linktree",
      title: "Link Test",
      message: "Hello World",
      buttonText: "Okay"
  })
})

JS 文件

function cuteAlert({
  type,
  title,
  message,
  buttonText = "OK",
  confirmText = "OK",
  cancelText = "Cancel",
  closeStyle,
}) {
  return new Promise((resolve) => {
    setInterval(() => {}, 5000);
    const body = document.querySelector("body");

    const scripts = document.getElementsByTagName("script");
    let currScript = "";

    for (let script of scripts) {
      if (script.src.includes("cute-alert.js")) {
        currScript = script;
      }
    }

    let src = currScript.src;

    src = src.substring(0, src.lastIndexOf("/"));

    let closeStyleTemplate = "alert-close";
    if (closeStyle === "circle") {
      closeStyleTemplate = "alert-close-circle";
    }

    let btnTemplate = `
    <button class="alert-button ${type}-bg ${type}-btn">${buttonText}</button>
    `;
    if (type === "question") {
      btnTemplate = `
      <div class="question-buttons">
        <button class="confirm-button ${type}-bg ${type}-btn">${confirmText}</button>
        <button class="cancel-button error-bg error-btn">${cancelText}</button>
      </div>
      `;
    }

    const template = `
    <div class="alert-wrapper">
      <div class="alert-frame">
        <!-- <div class="alert-header ${type}-bg"> -->
        <div class="alert-header">
          <span class="${closeStyleTemplate}">X</span>
          <img class="alert-img" src="${brand}.png" />
        </div>
        <div class="alert-body">
          <span class="alert-title">${title}</span>
          <span class="alert-message">${message}</span>
          ${btnTemplate}
        </div>
      </div>
    </div>
    `;

    body.insertAdjacentHTML("afterend", template);

    const alertWrapper = document.querySelector(".alert-wrapper");
    const alertFrame = document.querySelector(".alert-frame");
    const alertClose = document.querySelector(`.${closeStyleTemplate}`);

    if (type === "question") {
      const confirmButton = document.querySelector(".confirm-button");
      const cancelButton = document.querySelector(".cancel-button");

      confirmButton.addEventListener("click", () => {
        alertWrapper.remove();
        resolve("confirm");
      });

      cancelButton.addEventListener("click", () => {
        alertWrapper.remove();
        resolve();
      });
    } else {
      const alertButton = document.querySelector(".alert-button");

      alertButton.addEventListener("click", () => {
        alertWrapper.remove();
        resolve();
      });
    }

    alertClose.addEventListener("click", () => {
      alertWrapper.remove();
      resolve();
    });

    alertWrapper.addEventListener("click", () => {
      alertWrapper.remove();
      resolve();
    });

    alertFrame.addEventListener("click", (e) => {
      e.stopPropagation();
    });
  });
}

【问题讨论】:

  • 您可以使用窗口计时器采取几种方法。你试过什么?

标签: javascript jquery twitter-bootstrap alert toast


【解决方案1】:
const time = date.parse('10 June 2021 00:12:00 GMT') - Date.now();

if (time > 0) {
   setInterval(()=>{
      //your code here
   }, time )
}

【讨论】:

  • 感谢这工作。我需要从我的原始代码中删除 addEventLister("click ... 但总的来说这是一个很好的起点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-20
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 2016-02-07
  • 2018-05-03
  • 2018-07-29
相关资源
最近更新 更多