11496 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je ne cherche pas à rendre le présent script efficace parce que j'ai réalisé un programme qui fonctionne...

J'essaie juste de comprendre pourquoi ce script fonctionnait dans un site géré sous Joomla avec le composant "4me", et qu'il ne fonctionnait plus sous Joomla 2.5 avec "Chronoforms", en étant restitué pile-poil de la même manière tant au niveau de l'HTML que du JavaScript...

function verif()
  { 
  if (document.layers)
    {
    formulaire = document.forms.CertifDomPop;
    }
  else
    {
    formulaire = document.CertifDomPop;
    }
  }

function verifChoixType()
  {
  verif();
  if (formulaire.TypeDocument.value == "0")
    {
    alert('Vous devez tout d\'abord choisir un type de document!');
    formulaire.TypeDocument.focus();
    }
  }


(ceci n'est qu'un extrait)

Je pense que "document" ou "document.layers" ne générait aucune réaction de la part de Joomla 2.5. Il prenait en revanche les getElementById sans problème...

Je ne suis pas franchement à l'aise en JS. Je me débrouille vaguement avec le DOM et c'est tout. Est-ce que vous pourriez m'expliquer techniquement ce qui faisait qu'un script comme celui-ci ne fonctionnait pas systématiquement (pas dans un site fonctionnant sous un Joomla 2.5)?

Merci d'avance pour vos réponses Smiley smile
Ton script à l'air de sortir tout droit des années 90. Peut être que sur ton site sous Joomla 2.5 tu avais un doctype différent ce qui faisait que les vieilles API que tu utilisent ne fonctionnaient pas. Ou alors tu as un problème de conflit dans le nom de tes variables vu que tu utilises des variables globales (ce qu'il ne faut jamais faire).

En tout cas pour cibler un formulaire ou un élément de formulaire c'est bien getElementById qu'il faut utiliser et non plus document.forms.name qui est déprécié.

document.layers sert à cible les anciennes versions du navigateur Netscape (qui n'existent plus depuis au moins 15 ans.