2010-09-08 33 views
14

Có cách nào để phát hiện IE7 không?Cách phát hiện IE7 bằng javascript hoặc jquery và thêm một lớp vào div

Tôi không gặp bất kỳ sự cố nào với mã của mình trong IE8, nhưng tôi gặp sự cố với IE7.

Vì vậy, những gì tôi nghĩ là tôi có thể thêm một lớp với jquery khi một trình duyệt IE7 phát hiện nó bằng javascript.

Tôi muốn thay đổi từ

<div id="system"> 

để

<div id="system" class="ie7"> 

Cảm ơn trước.

+2

Sự cố này có liên quan đến kiểu hoặc JavaScript không? Nếu đây là một điều liên quan đến phong cách, bạn nên cân nhắc việc sử dụng các chú thích có điều kiện như được gợi ý.Nếu đây là một điều JavaScript, bạn nên đọc về tính năng phát hiện, mà đánh bại trình duyệt sniffing trong rất nhiều cách. – jwueller

Trả lời

9

Bạn có thể sử dụng một bình luận có điều kiện IE để thêm lớp qua javascript, một cái gì đó như thế này:

<!--[if IE 7]> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#system').addClass('ie7'); 
}); 
</script> 
<![endif]--> 
+2

Aha! cảm ơn. Tôi ngớ ngẩn quá. – shin

9

Bạn có thể làm điều đó chỉ với HTML:

css

.ie7{ 
    padding: 0; 
    color: red; 
} 

html

<!--[if IE 7 ]> <div id="system" class="ie7"> <![endif]--> 
<!--[if (gt IE 7)|!(IE)]><!--> <div id="system"> <!--<![endif]--> 
</div> 

Điều này tạo ra div với lớp ie7 nếu được thực hiện trong trình khám phá internet 7. Tất cả trình duyệt khác và IE> 7 sẽ chỉ tạo div đó mà không có lớp.

+0

Tôi nghĩ anh ấy muốn có một giải pháp jQuery. Tuy nhiên, giải pháp của bạn là một cách tốt hơn để đi vì người dùng có thể đã tắt javascript. –

+3

+1. Tôi thường làm điều này ở một nơi, trên '', và sử dụng bộ chọn CSS chứa 'body.ie7 # system', để tránh phải lặp lại các chú thích có điều kiện trong toàn bộ tài liệu. – bobince

3

Hãy thử điều này:

<!--[if IE 7]> 
<script type="text/javascript"> 
    $('#system').addClass('ie7'); 
</script> 
<![endif]--> 
50

nếu bạn thực sự muốn SOLV e này bằng cách sử dụng javascript bạn có thể muốn kiểm tra phiên bản như thế này:

if (navigator.appVersion.indexOf("MSIE 7.") != -1) 
    $('#system').addClass('ie7'); 
+0

+1 cho giải pháp không phụ thuộc vào các tùy chọn có sẵn của khung javascript hoặc nhận xét có điều kiện. – blackhawk

9

Phát hiện IE7 chỉ cần sử dụng

if($.browser.msie && parseFloat($.browser.version) < 8){ 
    //do other stuff 
    return; 
} 

Để làm những gì bạn muốn với nó chỉ:

if($.browser.msie && parseFloat($.browser.version) < 8){ 
    $('#system').addClass('ie7'); 
} 
+0

Bạn có ý nghĩa <8? – shin

+0

có, xin lỗi tôi đã có nghĩa là <8 –

+13

Tại thời điểm này (2 năm sau), '.browser' đã được gỡ bỏ khỏi jQuery. – Brad

0

Vui lòng lưu ý rằng chế độ xem tương thích của IE8 cũng sẽ có <!--[if IE 7 ]> là đúng

Vì vậy, bạn nên thực hiện một bước nhảy thứ hai l kiểm tra trên chế độ tài liệu, nếu bạn không muốn thay đổi được phản ánh trong khung nhìn IE8 Compat.

<!--[if IE 7]> 
    <script type="text/javascript"> 
    try 
    { 
    if(document.documentMode!=8){ 
    //Your code comes here 
    } 
    } 
    catch(exception){ 
    } 
    </script> 
<!--<![endif]--> 
Các vấn đề liên quan