必须在 Iphone 上调用 rest JS 警报到 运行 (safari)

Have to call alert for rest JS to run on Iphone (safari)

如果我不在 if 语句之前调用 alert,我会遇到无法在 iPhone 上执行 JS 代码的问题。这是我的代码:

submitHandler = (e) => {
  e.preventDefault();
  var dataFromForm = $("#send").serialize();
  alert(); // Without this the code below wont execute on iphne
  if (window.localStorage) {
    if (localStorage.getItem("timeout")) {
      const timePrev = localStorage.getItem("timeout");
      const timeNow = Math.round(new Date().getTime() / 1000);
      if (timeNow - timePrev >= 300) {
        var available = true;
      } else {
        var available = false;
        document.getElementById("message").innerHTML =
          '<span class="fail"> Spam protection</span>';
      }
    } else {
      var available = true;
    }
  } else {
    var available = true;
  }
  if (available) {
    $.post("mail.php", dataFromForm, function (data) {
      document.getElementById("message").innerHTML = "";

      console.log(data);
      data = JSON.parse(data);
      console.log(data);
      if (data.statusBool === true) {
        document.getElementById("message").innerHTML =
          '<span class="success">' + data.status + "</span>";
        document.getElementById("name").value = "";
        document.getElementById("email").value = "";
        document.getElementById("msg").value = "";
        var timenow = Math.round(new Date().getTime() / 1000);
        localStorage.setItem("timeout", timenow);
      } else {
        document.getElementById("message").innerHTML =
          '<span class="fail">' + data.status + "</span>";
      }
    });
  }
  setTimeout(function () {
    document.getElementById("message").innerHTML = "";
  }, 3000);
};

如果我不在该语句之前放置 alertalert 下面的代码将不会执行。

有谁知道如何解决这个问题,或者知道我可以使用什么来代替警报,所以它对用户不可见?

回答者@Chris G

jsfiddle.net/rqht1kzo

localStorage.setItem('timeout', new Date().getTime() / 1000 - 400);

var available = false;
const timePrev = window.localStorage && window.localStorage.getItem('timeout');
if (timePrev) {
  const timeNow = Math.round(new Date().getTime() / 1000);
  if (timeNow - timePrev >= 300) available = true;
}

if (available) {
  console.log("it's available")
} else {
  document.getElementById('message').innerHTML = '<span class="fail"> fail message</span>';
}