2013-06-24 16 views
5

Có cách nào để phát hiện xem khách truy cập vào trang web của tôi có đang chạy Chromium thay vì Google Chrome không? Ngay cả cơ bản UA sniffing (mà tôi biết là thực hành xấu) sẽ đủ cho trường hợp cụ thể của tôi, nhưng nó xuất hiện rằng Chromium và Chrome share the same UA string - đó là chính xác? Có cách nào khác mà tôi có thể phân biệt giữa hai người không?Làm cách nào để phát hiện Chromium cụ thể so với Chrome?

Trả lời

4

Tàu Chrome có trình đọc PDF tích hợp, Chromium thì không.
Bạn có thể phát hiện điều này bằng cách sử dụng JavaScript:

function isChrome() { // Actually, isWithChromePDFReader 
    for (var i=0; i<navigator.plugins.length; i++) 
     if (navigator.plugins[i].name == 'Chrome PDF Viewer') return true; 
    return false; 
} 

Phương pháp này không phải là 100% đáng tin cậy, bởi vì người dùng có thể sao chép chương trình đọc PDF nhị phân từ Chrome vào thư mục Chromium của họ, xem this answer on Ask Ubuntu.

Có hầu như không có sự khác biệt giữa Chromium và Chrome (chắc chắn không có trong công cụ hiển thị hoặc JavaScript), vậy tại sao bạn muốn phát hiện sự khác biệt?

+0

Cảm ơn! Tôi cho rằng bạn có thể có nghĩa là 'navigator.plugins [i] .name'? (Thay đổi 's'.: P) –

+0

@AlanSz Có, cảm ơn thông báo. –

+0

Điều đáng nói là không có gì đúng với phiên bản Chrome dành cho máy tính để bàn. – hexalys

0

Đây là một biến thể câu trả lời Paul W. mà làm việc cho Chromium phiên bản 42 trở lên:

function isChromium() { // Actually, isWithChromiumPDFReader 
    for (var i=0; i<navigator.plugins.length; i++) 
     if (navigator.plugins[i].name == 'Chromium PDF Viewer') return true; 
    return false; 
} 

Điều này tất nhiên chỉ hoạt động nếu các plugin đã không bị vô hiệu hóa bởi người sử dụng.

2

Phiên bản Chromium mới cũng có plugin PDF.
Nhưng họ cũng có Chromium-plugins, vì vậy nếu bất kỳ plugin nào bắt đầu với "Chromium", đó là Chromium:

function isChromium() 
{ 

    for (var i = 0, u="Chromium", l =u.length; i < navigator.plugins.length; i++) 
    { 
     if (navigator.plugins[i].name != null && navigator.plugins[i].name.substr(0, l) === u) 
      return true; 
    } 

    return false; 
} 
Các vấn đề liên quan