2012-04-20 24 views
9

Tôi đã phát xung quanh với các tập lệnh khác nhau, tôi đã tìm thấy một mã phù hợp với mọi thứ nhưng Chrome ... đây là mã tôi đã sử dụng để khác với tệp .CSS. Tôi đã thử tạo tên trình duyệt thành "Chrome" nhưng điều đó không hiệu quả.Sử dụng Javascript để phát hiện Google Chrome để chuyển đổi CSS

if (browser == 'Firefox') { 
    document.write('<link rel="stylesheet" href="../component/fireFoxdefault.css" />'); 
} 
if (browser == 'Safari') { 
    document.write('<'+'link rel="stylesheet" href="../component/default.css" />'); 
} 
+1

Hmm, tôi biết đây không phải là một phần của câu hỏi của bạn (và có lẽ * * bạn có một lý do chính đáng để làm điều này) nhưng bạn không nên viết CSS để nhắm mục tiêu trình duyệt, bạn nên nhắm mục tiêu các tính năng ... chẳng hạn, Safari và Chrome chắc chắn không yêu cầu CSS riêng biệt. http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ – potench

+0

Bản sao có thể có của [JavaScript: Cách tìm hiểu xem trình duyệt của người dùng có phải là Chrome không?] (https: // stackoverflow. com/questions/4565112/javascript-how-to-find-out-nếu-người dùng-trình duyệt-là-chrome) – zypA13510

Trả lời

33

Sử dụng sau đây để phát hiện chrome:

var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; 

Nguồn: http://davidwalsh.name/detecting-google-chrome-javascript

Cập nhật (2015/07/20):

Các giải pháp trên không phải lúc nào làm việc . Một giải pháp đáng tin cậy hơn có thể được tìm thấy trong this answer (xem bên dưới). Điều đó đang được nói, tôi sẽ avoid browser detection and go with feature detection instead:

var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); 

Bạn có thể bao gồm một file css riêng cho chrome như thế này:

if (isChrome) { 
    document.write('<'+'link rel="stylesheet" href="../component/chromeDefault.css" />'); 
} 

UPDATE (2014/07/29):

@ gillesc có một đề xuất thanh lịch hơn để phát hiện Chrome mà anh đã đăng trong nhận xét bên dưới và nó cũng có thể được xem trên question này.

var isChrome = !!window.chrome 
+0

Được rồi. Tôi nhìn vào trang web đó và đọc nó, nhưng nó thực sự đã không làm cho vì một số lý do với "-1" ở phần cuối của biến. – Jakob

+1

.indexOf trả về vị trí của giá trị (tên trình duyệt) trong chuỗi (userAgent). Vị trí bắt đầu bằng 0. -1 được trả về nếu không tìm thấy giá trị. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/indexOf –

+8

'var is_chrome = !! window.chrome' là phương pháp phát hiện tốt hơn vì tác nhân người dùng có thể bị giả mạo. – GillesC

-1
var userAgent = navigator.userAgent.toLowerCase(); 
$.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase()); 

// Is this a version of Chrome? 
if($.browser.chrome){ 
    userAgent = userAgent.substring(userAgent.indexOf('chrome/') +7); 
    userAgent = userAgent.substring(0,userAgent.indexOf('.')); 
    $.browser.version = userAgent; 
    // If it is chrome then jQuery thinks it's safari so we have to tell it it isn't 
    $.browser.safari = false; 
} 

// Is this a version of Safari? 
if($.browser.safari){ 
    userAgent = userAgent.substring(userAgent.indexOf('safari/') +7); 
    userAgent = userAgent.substring(0,userAgent.indexOf('.')); 
    $.browser.version = userAgent; 
} 
+0

không hiểu tại sao trong dòng thứ hai bạn sử dụng lại navigator.userAgent.toLowerCase() vì bạn đã tuyên bố nó là userAgent ở trên;) Câu trả lời hay mặc dù – Rrjrjtlokrthjji

+0

có thể sao chép dán trên giá trị thay vì gõ – nkvnkv

1

Dưới đây là hai phương pháp đơn giản, một sử dụng indexOf và một sử dụng thử nghiệm:

// first method 
function check_chrome_ua() { 
    var ua = navigator.userAgent.toLowerCase(); 
    var is_chrome = /chrome/.test(ua); 

    return is_chrome; 
} 

// second method */ 
function check_chrome_ua2() { 
    var ua = navigator.userAgent.toLowerCase(); 
    var is_chrome = ua.indexOf("applewebkit/") != -1 && ua.indexOf("khtml") > - 1; 

    return is_chrome; 
} 

alert(check_chrome_ua()); // false or true 
alert(check_chrome_ua2()); // false or true 

Sau khi kiểm tra nếu chrome được sử dụng hoặc không có một trong hai chức năng boolean, bạn có thể triển khai phương pháp của bạn khi thay đổi biểu định kiểu.

1

Cập nhật cho Chrome trên iOS: Chrome 38 (được thử nghiệm trên iOS 8.1) trả về false trên !!window.chrome. Để khắc phục điều này, bạn có thể sử dụng:

function isChrome(){ 
    var windowChrome = !!window.chrome; 
    if(!windowChrome){ 
     // Chrome iOS specific test 
     var pattern = /crios/i; 
     return pattern.test(window.navigator.userAgent); 
    }else{ 
     return windowChrome; 
    } 
} 

Google reference về vấn đề

+0

Chrome dành cho iOS chỉ là Safari, đừng nhầm lẫn cả hai. –

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