Hay algunas maneras de manejar eventos con HTML/DOM. No existe un camino real o incorrecto, pero diferentes formas son útiles en diferentes situaciones.
1: No ha definirla en el código HTML:
<input id="clickMe" type="button" value="clickme" onclick="doFunction();" />
2: Hay añadiéndolo a la propiedad DOM para el evento en Javascript:
//- Using a function pointer:
document.getElementById("clickMe").onclick = doFunction;
//- Using an anonymous function:
document.getElementById("clickMe").onclick = function() { alert('hello!'); };
3: Y no ha adjuntando una función de el controlador de eventos que utiliza Javascript:
var el = document.getElementById("clickMe");
if (el.addEventListener)
el.addEventListener("click", doFunction, false);
else if (el.attachEvent)
el.attachEvent('onclick', doFunction);
Tanto el segundo como el tercer método permiten inline/anonymou s funciones y ambas deben declararse después de que el elemento se haya analizado desde el documento. El primer método no es XHTML válido porque el atributo onclick no está en la especificación XHTML.
Los métodos 1º y 2º son mutuamente excluyentes, lo que significa que usar uno (el 2º) anulará el otro (el 1er). El tercer método le permitirá adjuntar tantas funciones como desee al mismo controlador de eventos, incluso si también se ha utilizado el primer o el segundo método.
Lo más probable es que el problema se encuentre en algún lugar de la función CapacityChart()
. Después de visitar su enlace y ejecutar su secuencia de comandos, se ejecuta la función CapacityChart() y se abren las dos ventanas emergentes (una se cierra según el script).Donde se tiene la siguiente línea:
CapacityWindow.document.write(s);
Pruebe lo siguiente en su lugar:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
EDITAR
Cuando vi su código pensé que estabas escribiendo específicamente para IE. Como han mencionado otros, deberá reemplazar las referencias a document.all
con document.getElementById
. Sin embargo, aún tendrá la tarea de corregir el script después de esto, por lo que le recomendaría que funcione al menos en IE primero, ya que cualquier error que cometa al cambiar el código para funcionar en el navegador cruzado podría causar aún más confusión. Una vez que esté funcionando en IE, será más fácil saber si está funcionando en otros navegadores mientras actualiza el código.
Por favor, defina "doesn parece que funciona correctamente ". ¿Qué error (s) está recibiendo cuando hace clic en él? –
El botón funciona en IE8, pero no FF 3.5 debido a un error de JavaScript (vea la respuesta de Jeff) –
Sí, resulta que document.all es una característica IE no estándar; actualicé mi respuesta con una alternativa sugerida. – Jeff