2009-12-22 32 views
20
$(window).load(function() { 
    if($.browser.msie && $.browser.version=="6.0") { 
    // do stuff 
    } 
}); 

Chỉ cần nhận ra rằng $ .browser đã bị khấu hao trong 1.3. Phương pháp mới để phát hiện IE là gì, đặc biệt là IE6.Phát hiện IE bằng cách sử dụng jQuery

+2

'jQuery.browser' không được dùng nữa.Mặc dù nó không còn được sử dụng bởi jQuery bên trong nó có sẵn cho các kịch bản người dùng cho tương lai vô hạn: http://docs.jquery.com/Utilities/jQuery.browser –

+0

Tài liệu nói "Ngừng sử dụng trong jQuery 1.3 (xem phần' jQuery.support') Số phiên bản của công cụ hiển thị cho trình duyệt của người dùng. ". – kiamlaluno

+1

* Tính năng phát hiện * tốt hơn nhiều so với * trình duyệt đánh hơi *, bạn đang cố gắng đạt được gì khi trang của bạn được kết xuất bởi IE6? – CMS

Trả lời

19

jQuery documentation for jQuery.browser hiển thị cảnh báo sau. (Nhấn mạnh là của tôi.)

$.browser sử dụng navigator.userAgent để xác định nền tảng này, nó là dễ bị giả mạo bởi người sử dụng hoặc che giấu thông bởi trình duyệt riêng của mình. Cách tốt nhất là tránh mã trình duyệt cụ thể hoàn toàn nếu có thể. Thay vì dựa vào $.browser, tốt hơn là nên sử dụng các thư viện như Modernizr.

Các trang tài liệu cũng nói:

tài sản này đã bị xóa trong jQuery 1.9 và có sẵn chỉ thông qua plugin jQuery.migrate. Thay vào đó, hãy thử sử dụng tính năng phát hiện.

Thậm chí jQuery.support, được đề xuất từ ​​tài liệu cũ có cảnh báo sau. (Nhấn mạnh là của tôi.)

Một tập hợp các thuộc tính thể hiện sự hiện diện của các tính năng hoặc lỗi trình duyệt khác nhau. Dành cho sử dụng nội bộ của jQuery; các thuộc tính cụ thể có thể bị xóa khi chúng không cần nội bộ để cải thiện hiệu suất khởi động trang. Đối với nhu cầu phát hiện tính năng của dự án của riêng bạn, chúng tôi khuyên bạn nên sử dụng thư viện bên ngoài như Modernizr thay vì phụ thuộc vào thuộc tính trong jQuery.support.

Tài liệu trước cho jQuery.support báo cáo các thuộc tính và giá trị sau đây.

  • $.support.boxmodelfalse trong IE 6, và 7.
  • $.support.cssFloatfalse cho IE 6, 7 và 8; nó là true trong IE 9.
  • $.support.leadingWhitespacefalse cho IE 6, 7 và 8.
  • $.support.objectAll hiện false là dành cho IE 6, 7 và 8.
+2

Chỉ dành cho tất cả những người khác tìm thấy nhận xét này, $ .support.cssFloat là sai đối với IE 6, 7 và 8. Trong IE 9, đó là sự thật. – Nemke

+0

Tôi biết câu trả lời này là loại cũ, nhưng gỡ lỗi trong IE9 với Chế độ Trình duyệt IE7 có $ .support.boxModel === true. Có lẽ đó là vì tôi đang sử dụng một chế độ trình duyệt trong IE9 ?? – kand

6

nóng từ các tài liệu: Chúng tôi khuyên bạn nên sử dụng thuộc tính này, vui lòng thử sử dụng tính năng phát hiện thay thế (xem jQuery.support).

1

Hiện trình duyệt Thông tin

jQuery.each(jQuery.browser, function(i, val) { 
$("<div>" + i + " : <span>" + val + "</span>") 
.appendTo(document.body); 
}); 

Alert phiên bản của công cụ rendering IE đang được sử dụng. Sẽ không hoạt động trong jQuery 1.9 trở lên trừ khi plugin jQuery Migrate được bao gồm.

if ($.browser.msie) { 
alert($.browser.version); 
} 
Các vấn đề liên quan