我正在尝试将使用adblock的PC用户重定向到某个页面。但我不想重定向移动用户。
这是我的代码
<script src="/assets/js/ads.js" type="text/javascript"></script>
//the bait for adblock
<script type="text/javascript">
if(document.getElementById('ElvJCLbfcHDP')){
alert('Blocking Ads: No');
} else {
alert('Blocking Ads: Yes');
}
正如您所看到的,这只会显示广告是否被屏蔽。但我要做的是检查用户是来自手机还是PC,然后将PC广告拦截用户重定向到某个页面,让移动用户使用网站原样。
我发现了这个
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
// some code..
}
但是你可以看到它只检测用户是否来自移动设备然后运行代码。我希望它检查用户是否来自PC然后运行重定向
答案 0 :(得分:1)
使用!
logical not operator更改声明
if(!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
// Desktop / pc
}
答案 1 :(得分:1)
不要尝试根据设备的测试进行重定向。您将花费时间更新列表,并想知道为什么列表中的某些设备正在通过。 navigator.userAgent
众所周知是不可靠的。
来自 MDN :
已弃用此功能已从Web标准中删除。虽然有些浏览器可能仍然支持它,但它正在进行中 被丢弃。避免使用它并尽可能更新现有代码; 请参阅本页底部的兼容性表格以指导您的 决策。请注意,此功能可能随时停止工作。
NavigatorID.userAgent只读属性返回用户代理 当前浏览器的字符串。
规范要求浏览器提供尽可能少的信息 这个领域尽可能。永远不要假设这个属性的价值 将在同一浏览器的未来版本中保持不变。 不要尝试 完全使用,或仅用于当前版本和过去版本 浏览器。新浏览器可能会开始使用相同的UA或部分UA 较旧的浏览器:你真的不能保证浏览器代理 确实是这家酒店宣传的那家。
另请注意,浏览器的用户可以根据需要更改此字段的值(UA欺骗)。
通常,桌面可以根据窗口的宽度(以CSS像素而非硬件像素为单位)进行根除。
if(window.innerWidth > 1280){
location.href = "desktop path";
} else {
location.href = "mobile path";
}