Другие уже отметили, что перехват браузера не идеален, но есть случаи, когда ошибка возникает только в браузере, и ее может быть трудно обнаружить. В этом случае вы можете прослушивать браузер и надеяться, что строка пользовательского агента верна. Вот что делает Ext-JS.
var ua = navigator.userAgent.toLowerCase();
var isChrome = /\bchrome\b/.test(ua);
var isSafari = !isChrome && /safari/.test(ua);
Строка 62 представления источника: http://dev.sencha.com/deploy/dev/docs/source/Ext.html имеет все определения браузера Ext в удобном для чтения формате.
Это хрупко и, вероятно, не будет работать, так как выходят новые версии и браузеры.
Скажите нам, почему вы тестируете сафари, чтобы мы могли убедиться, что нет лучшего способа добиться того, чего вы хотите.