Il existe plusieurs façons de gérer les événements avec HTML / DOM. Il n'y a pas vraiment de bonne ou de mauvaise façon, mais différentes manières sont utiles dans différentes situations.
1: Il est défini dans le HTML:
<input id="clickMe" type="button" value="clickme" onclick="doFunction();" />
2: Il est ajouté à la propriété DOM pour l'événement en Javascript:
//- Using a function pointer:
document.getElementById("clickMe").onclick = doFunction;
//- Using an anonymous function:
document.getElementById("clickMe").onclick = function () { alert('hello!'); };
3: Et il y a attacher une fonction au gestionnaire d'événements en utilisant Javascript:
var el = document.getElementById("clickMe");
if (el.addEventListener)
el.addEventListener("click", doFunction, false);
else if (el.attachEvent)
el.attachEvent('onclick', doFunction);
Les deuxième et troisième méthodes autorisent les fonctions inline / anonymes et les deux doivent être déclarées après que l'élément a été analysé à partir du document. La première méthode n'est pas XHTML valide car l'attribut onclick n'est pas dans la spécification XHTML.
Les 1ère et 2e méthodes s'excluent mutuellement, ce qui signifie que l'utilisation de l'une (la 2e) prévaudra sur l'autre (la 1re). La 3ème méthode vous permettra d'attacher autant de fonctions que vous le souhaitez au même gestionnaire d'événements, même si la 1ère ou la 2ème méthode a également été utilisée.
Très probablement, le problème se situe quelque part dans votre CapacityChart()fonction. Après avoir visité votre lien et exécuté votre script, la fonction CapacityChart () s'exécute et les deux fenêtres contextuelles sont ouvertes (une est fermée selon le script). Où vous avez la ligne suivante:
CapacityWindow.document.write(s);
Essayez plutôt ce qui suit:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
EDIT
Lorsque j'ai vu votre code, je pensais que vous l'écriviez spécifiquement pour IE. Comme d'autres l'ont mentionné, vous devrez remplacer les références à document.allpar document.getElementById. Cependant, vous aurez toujours la tâche de corriger le script après cela, donc je recommanderais de le faire fonctionner au moins dans IE d'abord, car toute erreur que vous commettez en changeant le code pour fonctionner entre les navigateurs pourrait causer encore plus de confusion. Une fois qu'il fonctionne dans IE, il sera plus facile de dire s'il fonctionne dans d'autres navigateurs pendant que vous mettez à jour le code.