javascript重定向只有pc用户不能移动

时间:2017-02-04 19:44:51

标签: javascript redirect jquery-mobile mobile

我正在尝试将使用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然后运行重定向

2 个答案:

答案 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";
}