javascript - 如果用户使用 uc 浏览器访问我的网站,则显示警报
问题描述
我有一个网站,我想在其中向使用 UC 浏览器的访问者发出警报。(下面的代码是在 javascript 中)。我也想在 javascript 中得到答案。
对于 UC 浏览器
<script>
if (navigator.userAgent.indexOf(' UCBrowser/') >= 0) {
alert("Hello! I am an alert box!");
}
</script>
适用于 UC mini
<script>
if (navigator.userAgent.match(/^Mozilla\/5\.0 .+ Gecko\/$/)) {
alert("Hello! I am an alert box!");
}
</script>
我知道其中一个会起作用。我从互联网上找到了这段代码。请指导我此代码是否正确。最重要的是,我想每天为具有 Ip address 的同一用户显示一次警报。请帮我解决一下这个。
解决方案
对于UCBrowser
navigator.userAgent.indexOf(' UCBrowser/') >= 0
意味着在 userAgent 中你有 "UCBrowser/" 字符串
对于UCMini,您可以这样做:
navigator.userAgent.indexOf(' UCMini/') >= 0
如果要加入这两个条件,请执行以下操作:
if (navigator.userAgent.indexOf(' UCBrowser/') >= 0 || navigator.userAgent.indexOf(' UCMini/') >= 0) {
alert("Hello! I am an alert box!");
}
完整的解决方案
现在要做一天只显示一次消息你需要存储最后一个警报时间戳,你可以选择你喜欢的方法,我认为最简单的是使用本地存储,这里有完整的代码注释:
if (navigator.userAgent.indexOf(' UCBrowser/') >= 0 || navigator.userAgent.indexOf(' UCMini/') >= 0) {
// get current timestamp
now = new Date().getTime();
// get last timestamp or zero if not present
last = JSON.parse(localStorage.getItem('last') || 0 )
// set the last timestamp for next visit
localStorage.setItem('last', now);
// if fist time visit (last == 0) or more the 24 hours (86400 seconds) -> alert
if ( last == 0 ){
alert("Alert first time");
}else if( last != 0 && now - last > 86400 ){
alert("Alert next time");
}
}
推荐阅读
- android - 将 Android Studio 从 3.6 更新到 4.0 失败并出现错误
- dialogflow-es - 登录 (user_Login) 意图中密码的正确实体类型是什么?
- c# - 如何在具有复合键的模型的实体框架核心中获取单个实体?
- python - KFold 将拆分数量解压缩为相同数量的变量,而不是只有 2 个
- wordpress - 如何在 wordpress 主题中找到隐藏代码
- python - Python Pandas:如何更新 groupby 中其他列的值?
- c++ - std::is_class 在引用类上为假
- firebase - 为什么在 Firestore 中写入 1 个文档需要 +30 次读取?
- python - 如何在 Python Pandas 中将多行更改为单行
- go - 使用 jwt-go 库 - 密钥类型无效