Невозможно надежно определить браузер, не признавая, что конечный пользователь и / или сам браузер может изменять пользовательский агент.
Как следствие пункта 1. почти всегда лучше всего использовать возможности обнаружения поддержки (например, такие как Modernizr ).
Как бывают случаи, когда вам необходимо специально определить браузер, например, отключить или включить определенную возможность, о которой не сообщается / не обнаруживается, например, перетаскивание файла в Safari 5
В качестве примера, следующий код предоставляет функцию isFileDragAndDropSupported()
, которая использует функцию isSafari5()
для возврата поддержки перетаскивания файлов в Safari 5, даже если window.FileReader
не определено в Safari 5.
function isSafari5() {
return !!navigator.userAgent.match(' Safari/') && !navigator.userAgent.match(' Chrom') && !!navigator.userAgent.match(' Version/5.');
};
function isFileAPIEnabled () {
return !!window.FileReader;
};
function isFileDragAndDropSupported() {
var isiOS = !!navigator.userAgent.match('iPhone OS') || !!navigator.userAgent.match('iPad');
return (Modernizr.draganddrop && !isiOS && (isFileAPIEnabled() || isSafari5()));
};
Примечание. Modernizr требуется только для функции isFileDragAndDropSupported ().Функция isSafari5 () будет работать автономно.