首页 > 解决方案 > 如何延迟使用 Javascript 制作的警报框?

问题描述

如果有人使用 Internet Explorer 进入网站,我会弹出一个警告框。我遇到的问题是警报会立即显示,因此有时在警报出现时之前的网站仍然可见。我需要延迟,以便网站可以在警报出现之前加载 - 或者让它只在所有内容加载后才显示。我使用 WordPress。

我尝试了很多我在网上找到的代码,但不幸的是它们都没有为我工作,主要是因为我不知道如何将它“包含”到我已经拥有的代码中(我从另一个 Stack Overflow 线程获得)

function isIE() {
  ua = navigator.userAgent;

  /* MSIE used to detect old browsers and Trident used to newer ones*/
  var is_ie = ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1;

  return is_ie; 
}
/* Create an alert to show if the browser is IE or not */
if (isIE()){
    alert('MY ALERT MESSAGE');
}

我希望在页面加载后以延迟或使用 onload 的形式显示警报。Javascript“仅”是首选,因为我使用不喜欢 jQuery 的网页构建器。

标签: javascriptjqueryalertdelayonload

解决方案


我建议在页面底部添加 script 标签,或者使用onloadbody 元素的。

在这两种情况下,警报都会在 html 到达用户之后出现。


另一种更优雅的方法是自己制作一个小模态,即创建自己的“警报”。默认情况下,您隐藏它,并在用户拥有 IE 时显示它:

// CSS
#browserWarning{
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%);
    background: #FFF;
    padding: 25px;
}

// Javascript
if (isIE()){
    document.getElementById("browserWarning").style.display = 'block';
}

您现在可以创建一些看起来更好的东西,允许更多解释(我假设“IE 不支持,因为”这里的消息),并且因为它是非阻塞的,所以页面的其余部分会继续加载。


推荐阅读