2013-02-19 3 views
6

Поскольку ошибка в холсте браузера для браузера Samsung, моя программа вызовет ошибку. (http://code.google.com/p/android/issues/detail?id=39247)Можно ли обнаружить браузер для браузера Samsung

Таким образом, я хочу отключить холст на всех браузерах Samsung.

Могу ли я обнаружить его с помощью навигационного объекта или иным способом?

я нашел тот же самый вопрос, но это решение выглядит не идеально (javascript - regex matching devices on user agent)

Wiki показывает Samsung имеет больше моделей. (http://en.wikipedia.org/wiki/Samsung_Galaxy_S_III)

+0

обнаружения использования функции, а не браузер нюхают. Легче, и что произойдет, если Samsung на следующей неделе поддержит его? – charlietfl

+1

Но он поддерживает Canvas, он просто имеет ошибку. – Sam

+1

может, вероятно, построить тест поддержки, независимо от того, когда ошибка будет исправлена, вы не будете исключать этих пользователей. – charlietfl

ответ

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

+0

Да, и один не используется Chrome Mobile. Вы можете проверить как этот номер, так и webkit, чтобы быть более безопасным. Но вы можете только когда-либо быть «в основном в безопасности». –

+1

Спасибо. Но это не решает мою проблему. Другие производители Android могут быть обнаружены в той же версии, а не только в Samsung. Я протестировал мою программу Canvas на браузере Asus и HTC, он отлично работает! Только у Samsung есть эта проблема с холстом. – Sam

0

Некоторые пользовательские агенты Samsung имеют в них слово «samsung». Если вы найдете «samsung» в строке пользовательского агента, это хороший индикатор. Однако большинство пользовательских агентов Samsung, на которые я смотрел, не содержали слова samsung. Но есть другая проверка, все номера моделей samsung (до сих пор) находятся в формате «GT-xxxxxx», поэтому мы проверяем наличие у пользователя агента «android», а затем «GT-» где-то в UA. (или слово samsung ...) Это, очевидно, немного слабее, но, похоже, их поймают до сих пор ....

0

следующее regex охватывает почти все Samsung мобильные устройства.

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)