Para qué necesitás detectar al navegador? Es algo que ya no se usa. Lo que se hace es detectar si el navegador posee la funcionalidad y, en caso negativo, ofrecer una alternativa. Y eso se hace con el fin de evitar un problema que vos mencionás de cierta manera: si en el futuro el navegador evoluciona y acepta dicha funcionalidad, tu código la incorporará automáticamente en lugar de descartarla como harías si sólo detectás al navegador en lugar de la funcionalidad. Un ejemplo:
Viejas versiones de Explorer no soportaban canvas cuando otros navegadores sí lo hacían. Si hubieras hecho algo así, las nuevas versiones de Explorer dirían que tu navegador no soporta canvas, lo cual no sería cierto si estás usando explorer 9:
Código PHP:
if (window.ActiveXObject){
alert('tu navegador no soporta canvas');
return;
}else{
var context = canvas.getContext("2d");
//...
}
En cambio, si hubieras hecho algo así, las cosa hubiera sido diferente:
Código PHP:
if (document.createElement("canvas").getContext) {
var context = canvas.getContext("2d");
//...
}else{
alert('tu navegador no soporta canvas');
}