2012-01-17 27 views

Trả lời

-1

Sử dụng jQuery.browser.version thay vì hỗ trợ

+2

tôi đã yêu cầu để thực hiện điều này với 'jQuery.support' –

+1

Vâng và tôi nói với bạn để sử dụng bro wser.version thay vì hỗ trợ. Nó không thể với sự hỗ trợ. – Grrbrr404

+1

FWIW, 'jQuery.browser.version' có thể hoạt động cho người dùng thực sự sử dụng các phiên bản cũ hơn của IE, nhưng không thành công khi thử nghiệm bằng chế độ tương thích cho phiên bản cũ hơn với IE9 (phiên bản hiển thị là" 9.0 "thay vì phiên bản cũ hơn.) Tuy nhiên, 'jQuery.support' không hoạt động với chế độ tương thích IE9. –

2

jQuery.support là để phát hiện các tính năng của trình duyệt. Để phát hiện phiên bản trình duyệt, hãy sử dụng jQuery.browser:

if ($.browser.msie && $.browser.version.substr(0,1)<7) { 
//IE7 

} 

Cập nhật: $ .browser không được dùng nữa, không sử dụng.

+0

Tôi đã yêu cầu thực hiện việc này với 'jQuery.support' –

+0

Tôi nghĩ rằng điều này sẽ chỉ phát hiện IE6 trở xuống. Bạn nên sử dụng toán tử so sánh '<=' thay vào đó nếu bạn muốn bao gồm IE7. –

2

như đã giải thích, .support là để phát hiện tính năng. nếu bạn muốn phát hiện trình duyệt, chỉ cần sử dụng .browser.

var ua = $.browser; 
if (ua.msie && ua.version.slice(0,1) == "8") { 
    alert('IE 8'); 
} else if (ua.msie && ua.version.slice(0,1) == "7") { 
    alert('IE 7'); 
} else { 
    alert('something else'); 
} 
+10

'$ .browser' không còn được dùng nữa và có thể sẽ bị xóa trong các phiên bản sau. –

-1

Hãy thử $.browser, nó sẽ cho bạn biết nếu phiên bản trình duyệt nhỏ hơn IE9

var isM = false; 
$.each($.browser, function (i, val) { 
    if ($.browser.msie && parseInt(val) < 9) isM = true; 
}); 
+0

Tôi đã yêu cầu thực hiện việc này với 'jQuery.support' –

+0

Như đã đề cập @oezi. Support là để phát hiện tính năng. –

+0

Không cần đến $ .each ở đây. – mhansen

8
if (jQuery.support.leadingWhitespace == false){ 

... code for IE7-IE8 ... 

} 
else { 
... 
} 
+0

khác sẽ là 'độ mờ' (tức là jQuery.support.opacity == false) – IberoMedia

41

này là hoàn toàn có thể với sự hỗ trợ:

if (!$.support.leadingWhitespace) { 
    //IE7 and 8 stuff 
} 

này cũng phát hiện IE Tuy nhiên, nếu bạn không muốn IE 6 chạy khối mã này, bạn sẽ cần một lá cờ khác để loại trừ nó

Lý do chính đáng để không sử dụng trình duyệt là tính năng không được chấp nhận và có thể sẽ bị xóa đối với plugin có phiên bản 1.9. (Xem nhận xét về câu trả lời cho How to detect IE7 with jQuery?)

"Chúng tôi khuyên bạn không nên sử dụng thuộc tính này; hãy thử sử dụng tính năng phát hiện thay thế (xem jQuery.support). JQuery.browser có thể được chuyển sang plugin trong bản phát hành sau jQuery" http://api.jquery.com/jQuery.browser/

đây là một ví dụ làm việc: http://jsfiddle.net/AGtG8/16/

+0

Hoàn hảo! ps: Nó cũng phát hiện IE5. –

+0

Câu trả lời thanh lịch. Tôi ghét những phương pháp "useragent" hoặc "html tags". – stonyau

3

một lừa tôi thấy là thêm Conditionnal Tags trong HTML

<!--[if lt IE 7]><body class="ie ie6 lte9 lte8 lte7"><![endif]--> 
<!--[if IE 7]><body class="ie ie7 lte9 lte8 lte7"><![endif]--> 
<!--[if IE 8]><body class="ie ie8 lte9 lte8"><![endif]--> 
<!--[if IE 9]><body class="ie ie9 lte9"><![endif]--> 
<!--[if !IE]><!--><body class="not-ie"><!--<![endif]--> 

Sau đó sử dụng JQuery như thế này:

$('body.ie7') 

Nó cũng giúp cho CSS trên IE cụ thể

body.ie6{ margin: 0; } 

Tôi không biết nếu nó tốt cho bạn, nhưng dù sao, đó là vẫn còn một lựa chọn.

+0

nhiều lần khi viết plugin chạy trên các trang web khác, bạn không thể thực hiện việc này. Ngoài ra, điều này là lãng phí byte và rất làm cho mã của bạn lộn xộn. – vsync

+1

@vsync Không, không. Đó là một thực hành tốt mà [HTML5 Boilerplate cũng thuyết giảng.] (Https://github.com/h5bp/html5-boilerplate/blob/master/index.html#L1-L5) –

+0

@MT - và tại sao tôi nên nghe HTML5 Bản mẫu? Tôi đã ở trong kinh doanh đủ lâu để sở hữu những ý kiến ​​của riêng tôi ... có thể lâu hơn những kẻ ở đó. – vsync

5

Hãy cẩn thận với những điều sau đây vì nó cũng bao gồm IE10:

if ($.browser.msie && $.browser.version.substr(0,1)<7) { 
//<IE7 
} 

tốt hơn sử dụng:

if ($.browser.msie && parseInt($.browser.version,10)<7) { 
//<IE7 
} 
+3

'$ .browser' không còn được bao gồm trong jQuery 1.9+, bạn có thể thêm lại nó bằng cách sử dụng plugin jQuery Migrate nếu cần. – nullability

1

tôi đã nhận thấy nhiều cách khác nhau để làm điều này, điều này KHÔNG sử dụng $.support mặc dù Tôi đã thấy rằng điều này hoạt động rất tốt.Cũng giống như một lưu ý, jquery vừa thông báo rằng họ sẽ loại bỏ bất kỳ hỗ trợ nào cho IE 6,7,8 trong jquery 2.0 (http://blog.jquery.com/2012/06/28/jquery-core-version-1-9-and-beyond/).

var msVersion = navigator.userAgent.match(/MSIE ([0-9]{1,}[\.0-9]{0,})/), 
     msie = !!msVersion, 
     ie6 = msie && parseFloat(msVersion[1]) < 7; 

    // Help prevent flashes of unstyled content 
    if (!ie6) { 
    //Do Something here. 
    } 

Chúc mừng mã hóa!

0

Tôi sử dụng này để kiểm tra nếu trình duyệt là IE 8 hoặc ít

để thay đổi phiên bản ie chỉ cần cập nhật 8 khác tức là verion

if (jQuery.browser.msie && jQuery.browser.version.substr(0,1) <= 8) { 
    runIECode(); 
} else { 
    runOther(); 
} 
0

tôi thêm vài dòng Javascript để làm cho nó hoạt một lần nữa:

jQuery.uaMatch = function (ua) { 
    ua = ua.toLowerCase(); 

    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || 
      /(webkit)[ \/]([\w.]+)/.exec(ua) || 
      /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || 
      /(msie) ([\w.]+)/.exec(ua) || 
      ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || 
      []; 

    return { 
     browser: match[ 1 ] || "", 
     version: match[ 2 ] || "0" 
    }; 
}; 

if (!jQuery.browser) { 
    matched = jQuery.uaMatch(navigator.userAgent); 
    browser = {}; 

    if (matched.browser) { 
     browser[ matched.browser ] = true; 
     browser.version = matched.version; 
    } 

    // Chrome is Webkit, but Webkit is also Safari. 
    if (browser.chrome) { 
     browser.webkit = true; 
    } else if (browser.webkit) { 
     browser.safari = true; 
    } 

    jQuery.browser = browser; 
} 
0
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { 
    var ieversion = new Number(RegExp.$1); 
    alert(ieversion < 9); 
} 
Các vấn đề liên quan