2010-07-19 36 views
6
Phát hiện

Tôi cố gắng để sử dụngtrình duyệt với JQuery

jQuery(document).ready(function() { 
     if (!jQuery.browser.msie <= 7.99) { 
       jQuery('#element').css('display', 'block'); 
     } 
    }); 

Nhưng nó không xuất hiện để làm việc? Tôi đang làm gì sai?

Thx

Sửa: Sử dụng ý kiến ​​có điều kiện

+4

Bạn đang cố gắng kiểm tra điều gì? Bạn nên sử dụng tính năng phát hiện thay vì phát hiện trình duyệt nếu có thể. –

+0

thực hành tiêu chuẩn sẽ là kiểm tra các khả năng cụ thể thay vì hành vi của trình duyệt. Bạn đang cố gắng hoàn thành chính xác điều gì? – jasonpgignac

+0

Hey nick - yeah, trong trường hợp này tôi cần kiểm tra các trình duyệt khác ngoài IE7? vì vậy đây là cách đơn giản nhất để đi [mặc dù nó bị mất giá] – Tom

Trả lời

7

jQuery.browser.version là những gì bạn đang tìm kiếm. Và có lẽ bạn nên parseFloat nó.

Nói chung, nó được xem xét dựa vào trình duyệt đánh hơi trừ khi hoàn toàn không có cách nào để phát hiện tính năng. Nó có thể giúp chúng tôi biết những gì vấn đề thực sự của bạn là.

EDIT: Bạn nên sử dụng các chú thích có điều kiện để phân phát các quy tắc/biểu định kiểu cho IE7 trở xuống.

+0

Tôi đang cố gắng làm - nếu #element CHỈ trên IE7 thì hãy để nguyên dạng CSS như hiển thị: none; - nếu không thì mọi trình duyệt khác sẽ thay đổi nó. Đây là vì CSS hiển thị đầu tiên và thanh trượt tôi đang sử dụng nó quá chậm để dựa vào JS. – Tom

+0

Bạn có thể sử dụng các câu lệnh điều kiện CSS và IE (không phải JS). –

+0

vâng nhưng tôi không muốn sử dụng câu lệnh có điều kiện như Google Pagespeed không thích điều đó. – Tom

3

Điều này dường như làm việc từ thử nghiệm hạn chế của tôi:

jQuery(document).ready(function() { 
    if(jQuery.browser.msie){ 
    if(parseFloat(jQuery.browser.version) < 8){ 
     //Versions of IE less than 8 
     jQuery('#element').css('display', 'block'); 
    } 
    else{ 
     //code for versions of IE at least 8 (currently 8 and 9) 
    } 
    } 
    else{ 
    //code for browsers other than IE (Firefox Safari, chrome, Opera, etc.) 
    } 
}); 
+0

hey thx. nhưng sẽ không chỉ làm việc này nếu MSIE - tức là thử nghiệm của nó cho MSIE và sau đó làm công cụ. Tôi cần mọi trình duyệt KHÁC nhưng <8? – Tom

+0

@Tom Tôi không chắc chắn những gì bạn đang cố gắng làm như vậy tôi đã sửa đổi mã của tôi để hiển thị vị trí đặt mã cho từng trường hợp bạn có thể đang cố giải quyết. – Adam

3

này không trả lời câu hỏi cụ thể của bạn, nhưng tôi muốn đề xuất một phương pháp đơn giản hơn nhiều. Sử dụng các nhận xét có điều kiện của IE để áp dụng một ID cụ thể cho thẻ body của bạn. Ví dụ:

<!--[if !IE]> --> 
<body> 
<!--<![endif]--> 
<!--[if IE 7]> 
<body id="IE7"> 
<![endif]--> 

Sau đó, nó trở nên khá tầm thường để phát hiện nó thông qua jQuery:

if($('body').is('#IE7'))... 
2

Bạn nên sử dụng ý kiến ​​có điều kiện cho điều này, nhanh hơn, dễ dàng hơn, ngắn hơn, như thế này:

<!--[if lt IE 8]> 
    <style type="text/css">#element { display: none; }</style> 
<![endif]--> 

Điều này sẽ ẩn phần tử trên IE7 trở xuống. Bạn không cần bất kỳ tập lệnh nào để thực hiện việc này, chỉ cần xóa display: none bạn hiện đang ẩn nó ban đầu khỏi biểu định kiểu gốc (hoặc nội dòng).

Đối với các nhận xét liên quan đến Google Pages, bạn không thích điều này ... bỏ qua nó, nếu bạn phải sửa chữa lỗi IE7, sửa lỗi, đúng cách. Điều này nhanh hơn và đơn giản hơn ... nếu Pagespeed có thể kiểm tra xem bạn có đang sử dụng tác nhân người dùng để thực hiện điều này hay không (điều này có nghĩa là jQuery.browser), nó sẽ không có cơ chế cho bạn biết đó là tệ hơn cách tiếp cận.

0
jQuery.browser.msie 

trả về true hoặc false

jQuery.browser.version 

là một để kiểm tra browserversion.

0

Bạn có thể sử dụng jQuery Browser Plugin. Nó cung cấp cho bạn một đối tượng javascript chứa tất cả thông tin về trình duyệt đang được sử dụng.
Ví dụ:

  • browser.name: Tên của trình duyệt được sử dụng.
    alert($.browser.name); // this will alert 'firefox'
  • browser.versionNumber``: Phiên bản của trình duyệt (lưu ý: dưới dạng số nguyên).
    alert($.browser.versionNumber); // this will alert '30'

Cá nhân tôi thấy nó rất dễ sử dụng. Phiên bản rút gọn chỉ là 1.44KB. Vui lòng tham khảo liên kết.

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