2011-02-04 66 views
33

Tôi đang phát triển tiện ích của Chrome và tôi tự hỏi có cách nào để tôi có thể phát hiện phiên bản Chrome mà người dùng đang sử dụng không?Cách phát hiện phiên bản Chrome đã cài đặt?

+0

Tại sao bạn muốn biết điều này? Và, bởi vì Chrome là nguồn mở, bạn có thể thay đổi điều này thành bất kỳ điều gì bạn muốn trước khi xây dựng. –

+0

Tìm kiếm của Google (không tức thì) trên Chrome 9 trên truy vấn đầu tiên sử dụng AJAX. Nó phá vỡ phần mở rộng của tôi. – Skizit

Trả lời

80

Nhận phiên bản chính của Chrome là một số nguyên:

function getChromeVersion() {  
    var raw = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./); 

    return raw ? parseInt(raw[2], 10) : false; 
} 

Tôi đã cập nhật câu trả lời ban đầu, do đó nó không ném một ngoại lệ trong các trình duyệt khác, và không sử dụng các tính năng không dùng nữa.

Bạn cũng có thể đặt minimum_chrome_version trong tệp kê khai để không cho phép người dùng có phiên bản cũ cài đặt.

+0

Làm cách nào để tôi thực hiện điều này? Cần làm so sánh .. ví dụ: if (Phiên bản <9) ' – Skizit

+0

@Skizit xem cập nhật – serg

+4

Không nên sử dụng appVersion. Xem: https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.appVersion –

1

Đây là một phiên bản, dựa trên câu trả lời từ @serg, nhằm giải nén tất cả các yếu tố của số phiên bản:

function getChromeVersion() { 
    var pieces = navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/); 
    if (pieces == null || pieces.length != 5) { 
     return undefined; 
    } 
    pieces = pieces.map(piece => parseInt(piece, 10)); 
    return { 
     major: pieces[1], 
     minor: pieces[2], 
     build: pieces[3], 
     patch: pieces[4] 
    }; 
} 

Việc đặt tên của các yếu tố trong các đối tượng được trả về dựa trên this quy ước, mặc dù bạn tất nhiên có thể điều chỉnh nó dựa trên this thay thế.

Các vấn đề liên quan