2012-01-08 42 views
6

Tôi đã viết một bản người dùng trong vài tháng qua, cho công ty của tôi và vừa thiết kế trang web chính cho nó với hướng dẫn cài đặt (nhân viên của chúng tôi có trụ sở ở khắp nơi trên thế giới và rất ít người đã nghe nói về người dùng, hãy để một mình sử dụng chúng, vì vậy lối vào này có nghĩa là để cắt giảm thời gian tôi dành hỗ trợ kịch bản).jQuery - phát hiện hệ điều hành và phiên bản hệ điều hành

Điều tôi muốn làm là trên trang cài đặt, phát hiện trình duyệt và phiên bản OS/OS mà họ đang sử dụng để tôi có thể làm nổi bật các hướng dẫn có liên quan nhất hơi tối hơn phần còn lại hoặc đơn giản là không hiển thị các phần không liên quan .

Ví dụ cho IE6, bạn phải sử dụng Trixie (tôi tin) để cài đặt userscripts, và điều này chỉ được hỗ trợ trên Win XP. IE7 được hỗ trợ trên Win XP, IE8 được hỗ trợ trên Win XP & Win 7 và IE9 chỉ được hỗ trợ trên Win 7. Đối với IE7, 8 & 9 Tôi đang khuyên sử dụng IEPro. Sự khác biệt giữa Trixie & IEPro là Trixie yêu cầu phần mở rộng của tệp .user.js phải được lưu trong C:/Program Files/bhelpuri. IEPro, mặt khác, yêu cầu phần mở rộng phải là .ieuser và lưu vào một vị trí khác. Đối với IE cụ thể, tôi muốn phát hiện phiên bản và chỉ hiển thị liên kết chính xác (hoặc .user.js hoặc .ieuser, tùy thuộc vào plugin họ nên sử dụng cho trình duyệt hiện tại của họ) để chúng được đưa đến phiên bản chính xác của tệp cho trình duyệt đó với đường dẫn lưu chính xác cho phiên bản OS/OS đó. Điều này có ý nghĩa gì cho đến nay không?

Về cơ bản, câu hỏi của tôi là, có ai biết cách phát hiện phiên bản hệ điều hành không? Tôi hiện đang sử dụng http://www.stoimen.com/blog/2009/07/04/jquery-os-detection/ nhưng điều đó không cung cấp cho phiên bản hệ điều hành, chỉ có hệ điều hành. Tôi đã thử lặp qua tất cả các biến được lưu trữ trong đối tượng điều hướng không thành công. Mọi sự trợ giúp sẽ rất được trân trọng.

Chỉnh sửa: Nhờ câu trả lời của Nates, tôi đã đặt mã chính xác tại http://jsfiddle.net/Mu8r5/1/. Tôi hy vọng điều này sẽ giúp một người nào đó trong tương lai.

Trả lời

22

Đặt cược tốt nhất của bạn là sử dụng thuộc tính navigator.userAgent. Nó sẽ cung cấp cho số phiên bản windows. Bạn có thể thấy một bảng như thế nào Windows bản đồ số phiên bản cho hệ điều hành ở đây:

OSVERSIONINFO

Dưới đây là một số mã ví dụ phát hiện:

var os = (function() { 
    var ua = navigator.userAgent.toLowerCase(); 
    return { 
     isWin2K: /windows nt 5.0/.test(ua), 
     isXP: /windows nt 5.1/.test(ua), 
     isVista: /windows nt 6.0/.test(ua), 
     isWin7: /windows nt 6.1/.test(ua), 
     isWin8: /windows nt 6.2/.test(ua), 
     isWin81: /windows nt 6.3/.test(ua) 
    }; 
}()); 

if(os.isWin7) { 
    ... 
} 

http://jsfiddle.net/45jEc/

+0

Cảm ơn đoạn trích - đây có vẻ là điểm khởi đầu tuyệt vời! Tôi sẽ đăng jsfiddle trong câu hỏi của mình sau khi tôi hoàn thành nó. – ClarkeyBoy

1

Câu hỏi tràn ngăn xếp Detect exact OS version from browser đi vào một số chi tiết thú vị về việc nhận phiên bản hệ điều hành từ tiêu đề Tác nhân người dùng mà tôi cho rằng chứa thông tin tương tự có thể được truy cập từ JavaScript.

5

Bạn có thể sử dụng thư viện javascript vĩ đại này: http://www.visitorjs.com/details Đây là mã nguồn mở gần đây

Chỉnh sửa: Thực ra, bây giờ nó được đổi tên thành session.js http://github.com/codejoust/session.js và kiến ​​thức của tôi, đó là tốt nhất mà bạn có thể nhận được.

+1

Cám ơn các con trỏ, tôi nghĩ rằng tôi sẽ đi với Nates trả lời như tôi thích viết mã của riêng tôi (1 - Tôi biết chính xác những gì nó làm và 2 - Tôi tìm hiểu thêm theo cách đó). Tôi cũng đã có một cái nhìn thông qua mã đó, và đôi kiểm tra, nhưng nó không xuất hiện để đi xa như phiên bản hệ điều hành, chỉ có hệ điều hành. Dù sao cũng cảm ơn bạn. – ClarkeyBoy

+0

Không tốt cho các cửa sổ 8.1 tức là 11 khi O/S quay lại với tư cách là N/A – Rippo

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