是否可以检测到三星股票浏览器
Posted
技术标签:
【中文标题】是否可以检测到三星股票浏览器【英文标题】:Is it possible to detect samsung stock browser 【发布时间】:2013-02-03 14:48:00 【问题描述】:因为三星股票浏览器的canvas bug,我的程序会报错。 (http://code.google.com/p/android/issues/detail?id=39247)
所以我想在所有三星股票浏览器上禁用画布。
我可以通过导航器对象或其他方式检测它吗?
我发现了同样的问题,但它的解决方案看起来并不完美 (javascript - regex matching devices on user agent)
Wiki 显示三星拥有更多型号。 (http://en.wikipedia.org/wiki/Samsung_Galaxy_S_III)
【问题讨论】:
使用特征检测,而不是浏览器嗅探。更容易,如果下周的三星出来支持它会发生什么? 但是它支持Canvas,只是有一个bug。 无论如何都可能建立一个支持测试,然后当错误修复后,您将不会被排除在外 @charlietfl 特征检测并不总是有效,例如三星股票浏览器给出了很多误报 【参考方案1】:我觉得还可以:
const isSamsungBrowser = navigator.userAgent.indexOf('SamsungBrowser') > - 1
【讨论】:
【参考方案2】:以下正则表达式几乎涵盖所有三星移动设备。
if(navigator.userAgent.match(/SAMSUNG|Samsung|SGH-[I|N|T]|GT-[I|N]|SM-[A|N|P|T|Z]|SHV-E|SCH-[I|J|R|S]|SPH-L/i))
console.log("it's Samsung");
// your code for Samsung Smartphones goes here...
【讨论】:
【参考方案3】:你可以这样做
var isSamsungBrowser = navigator.userAgent.match(/SamsungBrowser/i)
【讨论】:
您可以从here 看到它不适用于所有三星设备。其中一些具有Samsung
等字符串或以SGH
开头的设备型号...【参考方案4】:
某些三星用户代理中包含“三星”一词。如果您在用户代理字符串中找到“samsung”,这是一个很好的指标。然而,我看到的大多数三星用户代理都不包含三星这个词。但是有一个不同的检查,所有三星型号(到目前为止)都是格式“GT-xxxxxx”,所以我们检查用户代理是否有“android”,然后是 UA 某处的“GT-”。 (或三星这个词……)这显然有点松懈,但到目前为止似乎还不错……
【讨论】:
【参考方案5】:使用 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
【讨论】:
谢谢。数字“534.30”是否代表 WebKit 版本?如果是,其他手机厂商可能在 userAgent 中也有这个号码。 是的,Chrome Mobile 不使用的。您可以检查该号码和 webkit,以更安全。但你永远只能“真正安全”。 谢谢。但这并不能解决我的问题。其他 Android 制造商可能会检测到相同的版本,而不仅仅是三星。我已经在华硕和 HTC 股票浏览器上测试了我的 Canvas 程序,效果很好!只有三星有这个画布问题。以上是关于是否可以检测到三星股票浏览器的主要内容,如果未能解决你的问题,请参考以下文章