2010-03-22 33 views
10

Tôi đang cố gắng sử dụng dòng này để phát hiện loại trình duyệt: IE hoặc Firefox.Sử dụng javascript để phát hiện loại trình duyệt

alert(isBrowser("Microsoft")); 

nhưng tôi hoàn toàn không có gì, cảnh báo thậm chí không bật lên. Không chắc mình đang làm gì sai.

Cách thực hành tốt nhất để phát hiện loại trình duyệt là gì?

Trả lời

8

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

alert(navigator.appName); 
+0

Tôi thích sự đơn giản của câu trả lời này. Có ai có phản đối nó, bởi vì mặc dù các câu trả lời khác là toàn diện hơn (bao gồm số phiên bản, vv) tất cả tôi cần là loại trình duyệt. Nhưng bất kỳ vấn đề được biết đến ở đây. Nhân tiện, tôi đã thử nó trên FF và nó nói Netscape! – Duber

+3

Tôi đã thử trên Chrome và nó cũng cho biết netscape: s –

+2

Chrome, Firefox và Safari trả về tên "Netscape". –

4

Tôi nghĩ jQuery đã làm đúng khi họ hỗ trợ testing for features thay vì chỉ trình duyệt.

+1

Tôi đồng ý với lý thuyết - và chủ yếu là nó hoạt động trong thực tế. Nhưng đôi khi bạn cần phải biết trình duyệt. Ví dụ làm thế nào để bạn phát hiện chuột phải trong webkit (safari hoặc chrome) ngay cả prototype.js phải nghỉ mát để phát hiện trình duyệt ở đây – plodder

1

Một bài viết rất tốt về vấn đề này xuất phát từ Quirksmode: http://www.quirksmode.org/js/support.html

Các kịch bản được cung cấp bởi 'lajuette' là tốt nhưng nó không làm cho bạn thông minh hơn nhiều. Tác giả cùng giải thích suy nghĩ của mình đằng sau những kịch bản trong liên kết ở trên và về cơ bản những gì ông nói là:

  • Nó được không về phát hiện trình duyệt
  • Đó là phát hiện về đối tượng
  • này dẫn đến kiến ​​thức về trình duyệt nào được sử dụng.
+0

Câu trả lời này sẽ giúp bạn bất kể một khung javascript, mà tôi tin là điểm khởi đầu tốt nhất. – JeroenEijkhof

-1
function whereUWantToDetectBrowser(){ 
     if (navigator.appName == "Microsoft Internet Explorer") 
     intExp(); 
     else 
     other(); 

} 
function intExp(){ 
     //do what you want to do for specifically Internet Explorer 
} 
function other(){ 
     //do what you want to do for other browsers 
} 

mã này giải quyết được sự cố. Thay vì gọi các chức năng từ whereUWantToDetectBrowser(), nếu bạn viết mã cụ thể ở đó, điều này sẽ gây ra lỗi. Và mã sẽ không chạy. Vì trình duyệt phát hiện mã mà nó phải chạy (cụ thể cho từng trình duyệt). và nếu bạn phân biệt mã có nghĩa là mã không hoạt động trong một số trình duyệt, do đó bạn muốn viết mã đó cụ thể cho các trình duyệt đó. Vì vậy, other() sẽ không có hiệu lực trong IE, vì intExp() không có hiệu lực trong các trình duyệt khác.

3

Để phát hiện MSIE bạn có thể sử dụng JavaScript:

// This function returns Internet Explorer's major version number, 
    // or 0 for others. It works by finding the "MSIE " string and 
    // extracting the version number following the space, up to the decimal 
    // point, ignoring the minor version number 
    <SCRIPT LANGUAGE="JavaSCRIPT"> 
    function msieversion() 
    { 
     var ua = window.navigator.userAgent 
     var msie = ua.indexOf ("MSIE ") 

     if (msie > 0)  // If Internet Explorer, return version number 
     return parseInt (ua.substring (msie+5, ua.indexOf (".", msie))) 
     else     // If another browser, return 0 
     return 0 

    } 
    </SCRIPT> 

Dưới đây là một ví dụ về làm thế nào để gọi nó là bất cứ nơi nào trong html của bạn:

<SCRIPT LANGUAGE="javascript"> 
    if (msieversion() >= 0) 

     document.write ("This is Internet Explorer"); 

    else 

     document.write ("This is another browser"); 

    </SCRIPT> 

http://support.microsoft.com/kb/167820 http://support.microsoft.com/kb/167820

+0

Sẽ tốt hơn nếu bạn đưa ra câu trả lời thực sự với mã ở đây và cung cấp liên kết dưới dạng bản sao lưu nơi bạn có thông tin đó. – Anthon

+2

Tôi đã sửa câu trả lời của mình. –

+1

"msieversion()> = 0" nên đọc "msieversion> 0." Nếu không, tất cả các trình duyệt sẽ trả về "Đây là Internet Explorer". – flyingace

-2

tốt nhất và cách ngắn nhất để tìm loại trình duyệt cho IE là ..Bạn có thể làm tương tự cho các loại trình duyệt khác

if (navigator.appName == "Microsoft Internet Explorer"){ 

// Ur piece of validation 

} 
+0

nó sẽ chỉ hoạt động đối với IE 10 và các phiên bản cũ hơn. Kiểm tra nó [ở đây.] (Http://www.w3schools.com/jsref/prop_nav_appname.asp) –

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