2013-08-04 51 views
1

我使用嵌入在Google网站上的谷歌日历。检测谷歌网站上的黑莓浏览器

黑莓用户正在报告错误,所以我想将它们重定向到另一页。

我尝试添加使用instructions provided here这个代码

<script type="text/javascript"> 
    var ua = navigator.userAgent; 
    var url = "http://optimizedmobile.yoursite.com/"; 
    if (ua.indexOf("BlackBerry") >= 0) 
    { 
     if (ua.indexOf("WebKit") >= 0) 
     { 
     window.location = url; 
     } 
    } 
</script> 

,但它不工作。我测试了我创建的html文件中的代码并且它可以工作。

那么,任何其他的想法包括在页面上的代码?您认为Google代码不支持该代码吗?

任何其他想法重定向BB用户?

回答

6

我并不确切其中您正试图检测到的BlackBerry设备。不幸的是,其中许多人的答案不同。

this BlackBerry.com reference document,UserAgent的一些例子:

用户代理在黑莓10

Mozilla/5.0 (BB10; <Device Type>) AppleWebKit/537.10+ (KHTML, like Gecko) Version/<BB Version #> Mobile Safari/537.10+ 

用户代理在黑莓平板OS

Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.0.0; en-US) AppleWebKit/535.8+ (KHTML, like Gecko) Version/7.2.0.0 Safari/535.8+ 

用户代理黑莓6和BlackBerry 7

Mozilla/5.0 (BlackBerry; U; BlackBerry AAAA; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/X.X.X.X Mobile Safari/534.11+ 

用户代理黑莓设备软件4.2至5.0

BlackBerry9000/5.0.0.93 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179 

因此,它看起来对我来说,完全匹配的字符串BlackBerry只会在用户代理中显示具有Java OS版本4.2 - 7.1的设备。而且,其中只有OS 6.0 - 7.1的用户才会使用WebKit浏览器。

因此,我认为您只需在if声明中添加更多的案例来检测所有BlackBerry设备。

1

使用用户代理来确定您运行的平台是一种经典的方法,但这些边缘情况是它的缺点。

我写了这个is-mobile component,它可以检测你是否在黑莓和其他平台上运行,并考虑到各种边缘情况。

随意导入和使用如在这些例子:

isMobile.BlackBerry() => true/false 
isMobile.iPhone() => true/false 
isMobile.iOS() => true/false 
isMobile.Android() => true/false 
isMobile.any() => true/false