2013-07-03 34 views
7

tôi đọc một bài viết về Test for Internet Explorer in JavaScript trong đó nêu rằng một thử nghiệm nhanh là:Cách nhanh chóng giả mạo-sự thật của việc kiểm tra IE hay không?

var isMSIE = /*@[email protected]*/0; 

if (isMSIE) { 
    // do IE-specific things 
} else { 
    // do non IE-specific things 
} 

Nhưng một trong những comments cho thấy một cách khác: (và tôi có thể nói, nó hoạt động)

if (-[1,]) { 
// do non IE-specific things 
} else { 
// do IE-specific things 
} 

Và vì vậy tôi hỏi:

Điều gì đặc biệt với -[1,] rằng IE không nhận ra nó trong khi những người khác làm như vậy?

p.s.

tìm thấy một falsy-truthy lừa nhanh

IE='\v'=='v' 
+10

Bạn nên tránh trình duyệt đánh hơi bất cứ khi nào có thể và thay vào đó, hãy chọn tính năng phát hiện những gì bạn cần làm. –

+3

Có lẽ bạn nên tập trung vào tiêu đề câu hỏi xung quanh phần '- [1,]', có vẻ khá thú vị – lifetimes

+1

@AndrewMarshall Có một số cảnh quan mà bạn phải đối phó với các hack đặc biệt. ví dụ: có một nhãn cho biết "uploadfile" và nhãn sẽ mở trình tải tệp lên (ẩn) như thể bạn đã nhấn. bây giờ - một Lbael với thuộc tính FOr sẽ thực hiện công việc. nhưng nó hoạt động khác trong chrome vs Ie. và vì vậy, tôi cần phải phát hiện. có những lựa chọn khác, tôi biết, nhưng câu hỏi của tôi vẫn còn. –

Trả lời

5

[1,].toString() trong IE trước khi phiên bản gần đây là 1, mà khi bắt đầu bằng số học - sẽ ra falsey NaN trong khi các trình duyệt khác sẽ quay trở lại [1,].toString() === 1 cho một truthy -1.

Kỹ thuật đánh hơi kinh khủng của nó, tránh nó hoàn toàn và như người khác đã nhận xét phát hiện hỗ trợ cho các tính năng cụ thể.

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