Tôi thích kết hợp jQuery và CSS để giải quyết vấn đề này. Cách tiếp cận này được lấy cảm hứng từ modernizr, nó tự động bổ sung tất cả các khả năng của trình duyệt như các lớp vào phần tử html.
// Detect Browser
$.each(jQuery.browser, function(i, val) {
$("html").addClass(i);
$("html").addClass(val);
});
// Detect Operating System
$("html").addClass(navigator.platform);
Kết quả chạy mã trên cung cấp cho tôi kết quả này khi tôi xem trang và kiểm tra DOM. Một vấn đề là tôi đang dùng Mac với Chrome nhưng đối tượng trình duyệt của jQuery nghĩ rằng tôi đang sử dụng Safari, đây cũng là trình duyệt webkit.
<html class="webkit version 535.1 safari MacIntel">
Nếu bạn in navigator.useragent javascript của bạn sẽ nhận được một kết quả với nhiều thông tin như thế này
Mozilla-5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1
msie
là nhãn jQuery.browser giao cho IE vì vậy tôi có thể làm một cái gì đó như thế này trong css của tôi mà không cần phải báo cáo có điều kiện nếu tôi thêm trình duyệt như một lớp học để html hoặc cơ tags:
h1 { /* my regular h1 styles */ }
.msie h1 { /* IE edge case styles for h1 treatment */ }
trong jQuery bạn có thể sử dụng tuyệt vời của nó công cụ chọn để tìm kiếm phiên bản # và nhiều loại combo khác nhau để nhắm mục tiêu các sự cố trực tiếp chỉ áp dụng cho các phiên bản trình duyệt và kết hợp hệ điều hành cụ thể. Chỉ cần xuất toàn bộ lớp userAgent html, chỉ cần chắc chắn xóa chuỗi ký tự /().
http://api.jquery.com/jQuery.browser/
@Sky có một liên kết tuyệt vời để http://www.quirksmode.org/js/detect.html này có thể được sử dụng để có được trình duyệt chính xác hơn và thông tin hệ điều hành mà bạn có thể nối thêm như các lớp học để các phần tử HTML.
Nguồn
2011-10-25 20:28:22
Đối với phông chữ đặc biệt, bạn có thể chỉ định một danh sách và nếu phông chữ đầu tiên không được tìm thấy trên chính cơ cấu đó, dự phòng tiếp theo được sử dụng, sau đó tiếp theo, v.v. –
Khi Stanford lần đầu tiên cài đặt một hệ thống timesharing cho sinh viên đại học, nó là babysat bởi một ubergeek (Richard Gabriel?) Người trả lời tất cả các câu hỏi của tôi với "Tôi có thể nói với bạn rằng, nhưng đó là những gì bạn thực sự muốn biết?" Câu hỏi này nhắc tôi nhớ về những ngày đó ... – Spike0xff