Ci sono alcuni modi per gestire eventi con HTML/DOM. Non esiste un vero modo giusto o sbagliato, ma diversi modi sono utili in diverse situazioni.
1: C'è definendolo nel codice HTML:
<input id="clickMe" type="button" value="clickme" onclick="doFunction();" />
2: C'è aggiungendo 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'è allegando una funzione per il gestore eventi che utilizza 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 di inline/anonymou s funzioni 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 1 ° e il 2 ° metodo si escludono a vicenda, il che significa che l'utilizzo di uno (il 2 °) sovrascriverà l'altro (il primo). Il terzo metodo ti consentirà di allegare tutte le funzioni che desideri allo stesso gestore di eventi, anche se è stato utilizzato anche il 1 ° o il 2 ° metodo.
Molto probabilmente, il problema si trova da qualche parte nella funzione CapacityChart()
. Dopo aver visitato il tuo link ed eseguito lo script, la funzione CapacityChart() viene eseguita e i due popup vengono aperti (uno è chiuso come da script).Dove si ha la seguente riga:
CapacityWindow.document.write(s);
Provate il seguente invece:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
EDIT
Quando ho visto il codice ho pensato che si stesse scrivendo in modo specifico per IE. Come altri hanno già detto, dovrai sostituire i riferimenti a document.all
con document.getElementById
. Tuttavia, avrai ancora il compito di correggere lo script dopo questo, quindi ti consiglio di farlo funzionare almeno in IE, in primo luogo, poiché qualsiasi errore che fai cambiando il codice in modo che funzioni cross browser potrebbe causare ancora più confusione. Una volta che funziona in IE sarà più facile capire se funziona su altri browser mentre stai aggiornando il codice.
si prega di definire "doesn sembra funzionare correttamente ". che errore si ottiene quando si fa clic su di esso? –
Il pulsante funziona in IE8, ma non in FF 3.5 a causa di un errore JavaScript (vedere la risposta di Jeff) –
Sì, risulta document.all è una cosa di IE non standard; aggiornato la mia risposta con un'alternativa suggerita. – Jeff