javascript - 如何延迟使用 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 的网页构建器。
解决方案
我建议在页面底部添加 script 标签,或者使用onload
body 元素的。
在这两种情况下,警报都会在 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 不支持,因为”这里的消息),并且因为它是非阻塞的,所以页面的其余部分会继续加载。
推荐阅读
- javascript - webpack style-loader 将 css 显示为 style 标签内的 base64 编码字符串
- java - listview 是空的,我发现一个错误,但我无法解决它
- javascript - 无法使用 AngularJS 1 在 routeProvider 中使用查询参数进行路由
- java - 根据正确的月份在 ListView 中显示值
- python - 为指定的 n 创建所有布尔组合
- php - Braintree 使用测试信用卡进行 3D 安全交易
- javascript - JavaScript 变量 - 最佳性能
- java - 从文本文件读取无法正常工作
- c# - 分配驱动器号后是否可以禁止 Windows 通知
- amazon-web-services - AWS - 多个 ObjectCreate 的单一电子邮件通知