2013-02-19 89 views
6

因为三星股票浏览器的画布错误,我的程序会导致错误。 (http://code.google.com/p/android/issues/detail?id=39247是否有可能检测到三星股票浏览器

所以我想在所有三星股票浏览器上禁用画布。

我可以通过导航对象或其他方式检测它吗?

我发现了同样的问题,但它的解决方案看起来并不完美 (javascript - regex matching devices on user agent

维基表明三星有更多的车型。 (http://en.wikipedia.org/wiki/Samsung_Galaxy_S_III

+0

使用特征检测,而不是浏览器嗅探。如果下周的三星出来支持它会更容易,会发生什么? – charlietfl 2013-02-19 02:31:37

+1

但它支持Canvas,它只是有一个bug。 – Sam 2013-02-19 02:35:07

+1

可能会建立一个支持测试,然后当错误被修复时,你将不会被这些用户排除 – charlietfl 2013-02-19 02:37:42

回答

0

使用userAgent就足以检测到这个错误。查找字符串534.30。例如:

if (window.navigator && window.navigator.userAgent.indexOf('534.30') > 0) { 
    // Clear the canvas a different way because they are using a known-bad version of the default android browser 
    } 
+0

谢谢。数字“534.30”代表WebKit版本吗? 如果是,其他移动制造商也可能在userAgent中包含此号码。 – Sam 2013-04-11 00:37:50

+0

是的,还有一个Chrome Mobile未使用。你可以检查这个数字和webkit,更安全。但是你永远只能“真的很安全”。 – 2013-04-11 17:18:05

+1

谢谢。但它不能解决我的问题。其他Android制造商可能会被检测到相同的版本,而不仅仅是三星。我已经在华硕和HTC股票浏览器上测试了我的Canvas程序,它效果很棒!只有三星有这个画布问题。 – Sam 2013-04-12 03:00:13

0

一些三星用户代理在他们的字“三星”。如果你在用户代理字符串中找到“samsung”,这是一个很好的指标。但是,我看到的大多数三星用户代理不包含三星这个词。但是有一个不同的检查,所有三星型号(迄今为止)格式为“GT-xxxxxx”,因此我们检查用户代理具有“android”,然后在“UA”中查找“GT-”。 (或字三星...)这显然有点松懈,但似乎赶上他们目前为止....

0

以下正则表达式涵盖几乎所有三星手机设备。

if(navigator.userAgent.match(/SAMSUNG|Samsung|SGH-[I|N|T]|GT-[I|N]|SM-[N|P|T|Z]|SHV-E|SCH-[I|J|R|S]|SPH-L/i)) { 
    console.log("it's Samsung"); 
    // your code for samsung goes here ... 
} 
3

你可以简单地这样做

var isSamsungBrowser = navigator.userAgent.match(/SamsungBrowser/i)