2013-02-19 36 views
6

Vì lỗi canvas của trình duyệt chứng khoán samsung, chương trình của tôi sẽ gây ra lỗi. (http://code.google.com/p/android/issues/detail?id=39247)Có thể phát hiện trình duyệt chứng khoán samsung

Vì vậy, tôi muốn tắt canvas trên tất cả trình duyệt chứng khoán Samsung.

Tôi có thể phát hiện nó bằng đối tượng điều hướng hay cách khác không?

tôi thấy cùng một câu hỏi, nhưng nó là giải pháp có vẻ như không hoàn hảo (javascript - regex matching devices on user agent)

Wiki cho thấy Samsung có nhiều mô hình. (http://en.wikipedia.org/wiki/Samsung_Galaxy_S_III)

+0

phát hiện tính năng sử dụng, chứ không phải trình duyệt sniffing. Dễ dàng hơn và điều gì sẽ xảy ra nếu Samsung tuần tới có hỗ trợ nó? – charlietfl

+1

Nhưng nó hỗ trợ Canvas, nó chỉ có một lỗi. – Sam

+1

có thể xây dựng một thử nghiệm hỗ trợ bất kể, sau đó khi lỗi được sửa, bạn sẽ không loại trừ những người dùng đó – charlietfl

Trả lời

0

sử dụng userAgent là đủ để phát hiện lỗi này. Tìm chuỗi 534.30. Ví dụ:

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

Cảm ơn bạn. Số '534.30' có phải là phiên bản WebKit không? Nếu có, các nhà sản xuất thiết bị di động khác cũng có thể có số này trong userAgent. – Sam

+0

Có và không được Chrome Mobile sử dụng. Bạn có thể kiểm tra cả số và webkit đó để an toàn hơn. Nhưng bạn chỉ có thể "thực sự an toàn" về nó. –

+1

Cảm ơn. Nhưng nó không giải quyết được vấn đề của tôi. Các nhà sản xuất Android khác có thể được phát hiện cùng một phiên bản, không chỉ Samsung. Tôi đã thử nghiệm chương trình Canvas của mình trên trình duyệt cổ phiếu Asus và HTC, nó hoạt động rất tốt! Chỉ Samsung có vấn đề về canvas này. – Sam

0

Một số đại lý người dùng samsung có chữ "samsung" trong đó. Nếu bạn tìm thấy "samsung" trong chuỗi tác nhân người dùng thì đó là một chỉ báo tốt. Tuy nhiên, hầu hết các đại lý người dùng samsung tôi đã xem không chứa từ samsung. Nhưng có một kiểm tra khác nhau, tất cả các số mô hình samsung (cho đến nay) là ở định dạng "GT-xxxxxx" vì vậy chúng tôi kiểm tra cho các đại lý người dùng có "android" trong, tiếp theo là "GT-" một nơi nào đó trong UA. (hoặc từ samsung ...) Đây rõ ràng là một chút slack nhưng dường như bắt họ ok cho đến nay ....

0

Regex sau đây bao gồm gần như tất cả các thiết bị di động di động.

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

Bạn chỉ có thể làm được điều này

var isSamsungBrowser = navigator.userAgent.match(/SamsungBrowser/i) 
Các vấn đề liên quan