Tôi muốn đưa người dùng của trang web của chúng tôi đến một trang lỗi nếu họ đang sử dụng phiên bản Internet Explorer
trước v9. Nó chỉ không xứng đáng với thời gian và tiền bạc của chúng tôi để hỗ trợ IE pre-v9
. Người dùng của tất cả các trình duyệt không phải IE khác đều ổn và không bị trả về. Đây là mã đề xuất:
if(navigator.appName.indexOf("Internet Explorer")!=-1){ //yeah, he's using IE
var badBrowser=(
navigator.appVersion.indexOf("MSIE 9")==-1 && //v9 is ok
navigator.appVersion.indexOf("MSIE 1")==-1 //v10, 11, 12, etc. is fine too
);
if(badBrowser){
// navigate to error page
}
}
Mã này sẽ làm gì?
Để đưa ra một vài ý kiến có thể sẽ đến theo cách của tôi:
- Có, tôi biết rằng người dùng có thể giả mạo
useragent
chuỗi . Tôi không quan tâm. - Vâng, tôi biết rằng các chuyên gia lập trình thích đánh hơi hỗ trợ tính năng thay vì loại trình duyệt nhưng tôi không cảm thấy cách tiếp cận này có ý nghĩa trong trường hợp này. Tôi đã biết rằng tất cả các trình duyệt không có IE (có liên quan) đều hỗ trợ các tính năng mà tôi cần và tất cả
pre-v9 IE
trình duyệt không có. Kiểm tra tính năng theo tính năng trên toàn trang web sẽ là một sự lãng phí. - Có, tôi biết rằng ai đó đang cố truy cập trang web bằng cách sử dụng
IE v1
(hoặc> = 20) sẽ không được đặt 'badBrowser' thành đúng và trang cảnh báo sẽ không được hiển thị đúng. Đó là một rủi ro chúng tôi sẵn sàng chấp nhận. - Có, tôi biết rằng Microsoft có "nhận xét có điều kiện" có thể được sử dụng để phát hiện phiên bản trình duyệt chính xác. IE không còn hỗ trợ các bình luận có điều kiện kể từ đó
IE 10
, khiến cách tiếp cận này hoàn toàn vô dụng.
Bất kỳ vấn đề rõ ràng khác để nhận thức?