Tous les navigateurs n'implémentent pas ECMAScript, DOM ou BOM de la même manière. Certains n'interprètent rien et la plupart ne le font que partiellement. Quelques-uns se servent même de méthodes propriétaires. Il convient donc de tester chaque méthode utilisée avant de vous en servir. Si le navigateur comprend la méthode, on le laisse continuer, sinon, on arrête le script ou on sort de la fonction. De la même manière, vous pouvez tester que les variables envoyées ont bien la valeur attendue.
Par exemple, supposez que vous souhaitiez être alerté des urls de chaque élément d'un conteneur lorsqu'ils en possèdent, vous pouvez placer dans votre code les tests suivants :
<script type="text/javascript"><!--
function fnTest(sId, sElem)
{
// On arrête la fonction si ces méthodes ne sont pas reconnues
if(!document.getElementById || !document.getElementsByTagName)
{
return;
}
var oCont = document.getElementById(sId);
var aElem = oCont.getElementsByTagName(sElem);
// ou si le tableau d'élément(s) n'existe pas
if(!aElem) return;
// Sinon, on lance la fonction fnRecapLinks
return fnRecapLinks(aElem);
}
function fnRecapLinks(aElem)
{
var iI = 0;
var iTab = aElem.length;
for(iI; iI < iTab; iI++)
{
// On passe cet élément si l'url n'existe pas
if(!aElem[iI].href) continue;
window.alert(aElem[iI].href);
}
}
//--></script>
Vous pourriez bien sûr ajouter d'autres tests mais rien ne sert d'en faire trop; ce qui compte est d'éviter les cas risqués.