J'ai un site qui existe en 3 versions: en Silverlight, en Flash, et en HTML pour les réfractaires aux plugins. Au lieu de proposer le choix entre les versions sur la page d'accueil, j'ai voulu faire une redirection automatique en fonction des plugins installés sur le navigateur, je me suis dis que 5 minutes sur google me suffiraient à trouver le code magique qui ferait ça. Erreur ! On trouve bien quelques codes un peu partout sur internet, mais parmis ceux que j'ai essayé, aucun ne fonctionnait correctement (enfin, ils fonctionnent quand on a le plugin installé et qu'on est sous IE, dans les autres cas c'est beaucoup moins sûr)
J'en suis arrivé donc à faire mon script moi même (enfin, je me suis inspiré d'un qui fonctionnait presque), et le voilà :
<script type="text/javascript">
function detectSilverlight() {
if (navigator.mimeTypes.length > 0) {
return
navigator.mimeTypes["application/x-silverlight"] != null &&
navigator.mimeTypes["application/x-silverlight"].enabledPlugin != null;
}
else if (window.ActiveXObject) {
try {
new ActiveXObject("AgControl.AgControl");
return true;
}
catch (oError) {
return false;
}
}
else {
return false;
}
}
function detectFlash() {
if (navigator.mimeTypes.length > 0) {
return
navigator.mimeTypes["application/x-shockwave-flash"] != null &&
navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin != null;
}
else if (window.ActiveXObject) {
try {
new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
return true;
}
catch (oError) {
return false;
}
}
else {
return false;
}
}
if (detectSilverlight()) {
window.location.replace("pageSilverlight.htm");
}
else if (detectFlash()) {
window.location.replace("pageFlash.htm");
}
else {
window.location.replace("pageHtml.htm");
}
</script>
Testé sous IE7, Opera 9.6, Firefox 3, et Chrome beta, le tout sous Windows, avec et sans les plugins. Donc à priori ça devrait être bon un peu partout. J'espère juste que les autres OS n'ont pas encore un système différent de gestion des plugins... Si jamais vous trouvez un bug, tenez moi au courant ;)