2011-09-07 57 views
32

Tôi làm cách nào để phát hiện phiên bản JavaScript nào mà trình duyệt hỗ trợ (nếu có)? Tôi muốn kiểm tra ECMAScript 3 so với ECMAScript 5 so với ECMAScript 6.Phát hiện phiên bản JavaScript

Lưu ý: Tôi muốn tránh thẻ không dùng nữa language.

+3

Bạn có thực sự cần phải kiểm tra phiên bản hoặc tính năng kiểm tra sẽ là đủ? ('if (typeof new Array(). forEach ===" function ") alert (" chúng ta có forEach ")') –

+3

Tôi rất muốn giới thiệu tính năng phát hiện qua phát hiện phiên bản. Nó dễ dàng hơn nhiều để duy trì theo thời gian và thường nó kiểm tra chính xác hơn những gì bạn thực sự quan tâm. Hãy nhớ rằng, triển khai ECMAScript 5 đã cho không phải là tất cả hoặc không có gì. Nhiều trình duyệt sẽ có một số thành phần của một phiên bản mới, nhưng không phải tất cả. – jfriend00

+0

Bạn cũng có thể tìm thấy http://kangax.github.io/compat-table/es5/ –

Trả lời

9

Tôi cho rằng nó phụ thuộc vào những gì bạn muốn làm gì với những thông tin, nhưng nhiều người thích phát hiện tính năng, thay vì tìm ra trình duyệt của ai đó đang sử dụng hoặc phiên bản JS nào.

Khám phá Modernizr, thư viện tuyệt vời có tính năng phát hiện cho bạn.

18

Đây là một tài liệu tham khảo tốt cho bạn: http://www.docsteve.com/DocSteve/Samples/JS/js_version.html

Về cơ bản, sử dụng thuộc tính ngôn ngữ phản đối của thẻ script

<script language="javascript">var js_version="1.0"</script> 
<script language="javascript1.1">var js_version="1.1"</script> 
<script language="javascript1.2">var js_version="1.2"</script> 
<script language="javascript1.3">var js_version="1.3"</script> 
<script language="javascript1.4">var js_version="1.4"</script> 
<script language="javascript1.5">var js_version="1.5"</script> 
<script language="javascript1.6">var js_version="1.6"</script> 
+0

này hữu ích Đây là những gì tôi sẽ đề xuất, mặc dù nó sử dụng thuộc tính không dùng nữa 'ngôn ngữ'. Bạn vẫn cần bản đồ phiên bản JS cho các phiên bản ECMAScript. http://en.wikipedia.org/wiki/ECMAScript#Version_correspondence –

+0

@Juan - ehh đúng, nhưng bạn thực sự không thể ngăn chặn điều đó trong trường hợp này. – Neal

12

Các giải pháp đề xuất để http://www.docsteve.com/DocSteve/Samples/JS/js_version.html hàm JavaScript đơn giản (sử dụng "createElement" xây dựng):

<script type="text/javascript"> 
function get_js_version() 
{ 
    this.jsv = { 
      versions: [ 
       "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "2.0" 
      ], 
      version: "" 
     }; 

    var d = document; 

    for (i = 0; i < jsv.versions.length; i++) { 
     var g = d.createElement('script'), 
      s = d.getElementsByTagName('script')[0]; 

      g.setAttribute("language", "JavaScript" + jsv.versions[i]); 
      g.text = "this.jsv.version='" + jsv.versions[i] + "';"; 
      s.parentNode.insertBefore(g, s); 
    } 

    return jsv.version; 
} 

document.write('JavaScript Version: ' + get_js_version()); 
</script> 
+0

giải pháp tốt để tạm thời tiêm và xóa sau khi phát hiện. không yêu cầu tích hợp thư viện. – ahnbizcad

+0

Tôi không thể tìm thấy bất kỳ thông tin nào về JS phiên bản 1.9 và 2.0, có vẻ như mới nhất là 1.8.5 hoặc? https://en.wikipedia.org/wiki/JavaScript#Version_history –

4

này bật ra một hộp cảnh báo với các phiên bản javascript được sử dụng bởi trình duyệt của bạn:

<script type="text/javascript"> 
 
    var jsver = 1.0; 
 
</script> 
 
<script language="Javascript1.1"> 
 
    jsver = 1.1; 
 
</script> 
 
<script language="Javascript1.2"> 
 
    jsver = 1.2; 
 
</script> 
 
<script language="Javascript1.3"> 
 
    jsver = 1.3; 
 
</script> 
 
<script language="Javascript1.4"> 
 
    jsver = 1.4; 
 
</script> 
 
<script language="Javascript1.5"> 
 
    jsver = 1.5; 
 
</script> 
 
<script language="Javascript1.6"> 
 
    jsver = 1.6; 
 
</script> 
 
<script language="Javascript1.7"> 
 
    jsver = 1.7; 
 
</script> 
 
<script language="Javascript1.8"> 
 
    jsver = 1.8; 
 
</script> 
 
<script language="Javascript1.9"> 
 
    jsver = 1.9; 
 
</script> 
 

 

 
<script type="text/javascript"> 
 
    alert(jsver); 
 
</script>

Related jsfiddle.net

+0

Trong khi điều này về lý thuyết có thể trả lời câu hỏi, [nó sẽ là thích hợp hơn] (// meta.stackoverflow.com/q/8259) để bao gồm các phần thiết yếu của trả lời ở đây và cung cấp liên kết để tham khảo. –

+0

Cảm ơn James đã mang câu hỏi meta đó đến thông báo của tôi, tôi sẽ lưu ý rằng trong tương lai. – Vickar

+0

Cảm ơn, rất hữu ích vì chúng tôi không cần phải sao chép bất cứ điều gì! – Nicofisi

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