2013-02-19 46 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) 
相關問題