Tôi cần biết liệu trình duyệt tự nhận dạng thông qua chuỗi tác nhân người dùng là IE7 hay IE8 thực sự là những trình duyệt đó hay đó là IE9 ở chế độ tương thích 7 hoặc 8.
Từ những gì tôi có thể thấy trong chuỗi tác nhân người dùng, IE9 ở chế độ tương thích IE7, cung cấp một chuỗi giống hệt với IE7 thực. Có một thuộc tính / phần tử / đối tượng bổ sung nào mà tôi có thể kiểm tra để xem nó có phải là IE9 "thực sự" đang ngụy trang không?
Tôi cho rằng chế độ tài liệu sẽ không giúp ích gì vì trang mà tập lệnh của tôi được tải vào có thể đang ép buộc hoặc buộc một cài đặt cụ thể.
Tôi hy vọng rằng IE9 sẽ có một số thuộc tính tồn tại và có thể kiểm tra được bất kể nó ở chế độ 7, 8 hay 9.
Đã chỉnh sửa để thêm…
Được rồi, tôi biết mình đã sai ở đâu. Tôi đang sử dụng trình đơn thả xuống "Chế độ trình duyệt" và chuyển nó sang IE8 và IE7 và nghĩ rằng đây là "chế độ tương thích IE8" và "chế độ tương thích IE7". Điều này tất nhiên là không đúng. Chế độ Trình duyệt của các công cụ dành cho nhà phát triển thực sự đang chuyển nó sang "giống" các trình duyệt cũ đó, vì vậy chỉ cần báo cáo các chuỗi hữu ích ban đầu là đúng.
Nếu tôi để chế độ trình duyệt tương thích với IE9 hoặc IE9 và thay vào đó thử các biến thể thả xuống của chế độ tài liệu, thì trên thực tế, tôi nhận được "Trident / 5.0" hiện diện trong tất cả 8 kết hợp (hai chế độ trình duyệt và 4 chế độ tài liệu). Tôi chỉ cần tránh chọn chế độ trình duyệt IE7 và IE8 vì chúng thực sự là (mô phỏng) IE7 và IE8.
Vì vậy, không có cách nào một trang, người dùng không phải nhà phát triển, thẻ meta hoặc danh sách tương thích của Microsoft có thể đặt IE9 vào trạng thái không thể xác định này.
Chỉ cần sử dụng if(navigator.userAgent.indexOf("Trident/5")>-1)
sẽ là đủ.
Đừng lo lắng, điều này không dành cho kiểu, định dạng, logic hoặc nội dung trang. Tôi sử dụng tính năng phát hiện cho những thứ đó. Tôi chỉ cần phát hiện IE9 (bất kể nó đang ở chế độ nào) và đưa ra quyết định về nội dung không phải trang về điều đó.
Cảm ơn đã hướng tôi đến câu trả lời với các đề xuất và liên kết của bạn.