Es gibt verschiedene Möglichkeiten, Ereignisse mit HTML / DOM zu behandeln. Es gibt keinen richtigen oder falschen Weg, aber verschiedene Wege sind in verschiedenen Situationen nützlich.
1: Es wird im HTML definiert:
<input id="clickMe" type="button" value="clickme" onclick="doFunction();" />
2: Es wird der DOM-Eigenschaft für das Ereignis in Javascript hinzugefügt:
//- Using a function pointer:
document.getElementById("clickMe").onclick = doFunction;
//- Using an anonymous function:
document.getElementById("clickMe").onclick = function () { alert('hello!'); };
3: Und es gibt eine Funktion, die mit Javascript eine Funktion an den Ereignishandler anfügt:
var el = document.getElementById("clickMe");
if (el.addEventListener)
el.addEventListener("click", doFunction, false);
else if (el.attachEvent)
el.attachEvent('onclick', doFunction);
Sowohl die zweite als auch die dritte Methode ermöglichen Inline- / anonyme Funktionen und beide müssen deklariert werden, nachdem das Element aus dem Dokument analysiert wurde. Die erste Methode ist kein gültiges XHTML, da das onclick-Attribut nicht in der XHTML-Spezifikation enthalten ist.
Die 1. und 2. Methode schließen sich gegenseitig aus, dh die Verwendung der einen (2.) Methode überschreibt die andere (1.). Mit der 3. Methode können Sie beliebig viele Funktionen an denselben Ereignishandler anhängen, auch wenn auch die 1. oder 2. Methode verwendet wurde.
Das Problem liegt höchstwahrscheinlich irgendwo in Ihrer CapacityChart()
Funktion. Nachdem Sie Ihren Link besucht und Ihr Skript ausgeführt haben, wird die Funktion CapacityChart () ausgeführt und die beiden Popups werden geöffnet (eines wird gemäß dem Skript geschlossen). Wo Sie die folgende Zeile haben:
CapacityWindow.document.write(s);
Versuchen Sie stattdessen Folgendes:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
BEARBEITEN
Als ich Ihren Code sah, dachte ich, Sie schreiben ihn speziell für den IE. Wie andere bereits erwähnt haben, müssen Sie Verweise auf document.all
durch ersetzen document.getElementById
. Sie haben jedoch weiterhin die Aufgabe, das Skript danach zu reparieren. Ich würde daher empfehlen, es zuerst mindestens im IE zum Laufen zu bringen, da Fehler, die Sie beim Ändern des Codes machen, um browserübergreifend zu funktionieren, noch mehr Verwirrung stiften können. Sobald es im IE funktioniert, ist es einfacher zu erkennen, ob es in anderen Browsern funktioniert, während Sie den Code aktualisieren.