Esistono alcuni modi per gestire gli eventi con HTML / DOM. Non esiste un vero modo giusto o sbagliato, ma modi diversi sono utili in diverse situazioni.
1: Lo sta definendo in HTML:
<input id="clickMe" type="button" value="clickme" onclick="doFunction();" />
2: C'è l'aggiunta alla proprietà DOM per l'evento in Javascript:
//- Using a function pointer:
document.getElementById("clickMe").onclick = doFunction;
//- Using an anonymous function:
document.getElementById("clickMe").onclick = function () { alert('hello!'); };
3: E c'è una funzione allegata al gestore eventi usando Javascript:
var el = document.getElementById("clickMe");
if (el.addEventListener)
el.addEventListener("click", doFunction, false);
else if (el.attachEvent)
el.attachEvent('onclick', doFunction);
Sia il secondo che il terzo metodo consentono funzioni incorporate / anonime ed entrambi devono essere dichiarati dopo che l'elemento è stato analizzato dal documento. Il primo metodo non è XHTML valido perché l'attributo onclick non è nella specifica XHTML.
Il 1o e il 2o metodo si escludono a vicenda, nel senso che l'uso di uno (il 2o) prevale sull'altro (il 1o). Il 3o metodo ti permetterà di associare tutte le funzioni che vuoi allo stesso gestore di eventi, anche se è stato usato anche il 1o o il 2o metodo.
Molto probabilmente, il problema risiede da qualche parte nella tua CapacityChart()funzione. Dopo aver visitato il collegamento ed eseguito lo script, viene eseguita la funzione CapacityChart () e vengono aperti i due popup (uno è chiuso come da script). Dove hai la seguente riga:
CapacityWindow.document.write(s);
Prova invece quanto segue:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
EDIT
Quando ho visto il tuo codice ho pensato che lo stessi scrivendo appositamente per IE. Come altri hanno già detto, dovrai sostituire i riferimenti document.allcon document.getElementById. Tuttavia, avrai comunque il compito di correggere lo script, quindi ti consiglio di farlo funzionare almeno in IE, poiché qualsiasi errore che commetti cambiando il codice per far funzionare il browser incrociato potrebbe causare ancora più confusione. Una volta che funziona in IE, sarà più facile dire se funziona in altri browser mentre aggiorni il codice.