Voglio rimandare gli utenti del nostro sito Web a una pagina di errore se utilizzano una versione Internet Explorer
precedente alla v9. Non vale la pena dedicare tempo e denaro al nostro supporto IE pre-v9
. Gli utenti di tutti gli altri browser non IE stanno bene e non devono essere rimbalzati. Ecco il codice proposto:
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
}
}
Questo codice farà il trucco?
Per evitare alcuni commenti che probabilmente mi verranno incontro:
- Sì, so che gli utenti possono forgiare la loro
useragent
stringa. Non mi preoccupo - Sì, so che i professionisti della programmazione preferiscono annusare il supporto delle funzionalità anziché il tipo di browser, ma in questo caso non credo che questo approccio abbia senso. So già che tutti i browser (pertinenti) non IE supportano le funzionalità di cui ho bisogno e che non tutti i
pre-v9 IE
browser. Controllare funzionalità per funzionalità in tutto il sito sarebbe uno spreco. - Sì, so che qualcuno che tenta di accedere al sito utilizzando
IE v1
(o> = 20) non imposterà 'badBrowser' su true e la pagina di avviso non verrà visualizzata correttamente. È un rischio che siamo disposti a correre. - Sì, so che Microsoft ha "commenti condizionali" che possono essere utilizzati per il rilevamento preciso della versione del browser. IE non supporta più i commenti condizionali a partire da
IE 10
, rendendo questo approccio assolutamente inutile.
Qualche altro ovvio problema di cui essere a conoscenza?