Solo lectura

Google Chrome - Foro de ayuda

Esta página web es un archivo de los hilos antiguos de los foros de Google. Más información

Problema con canvas de html5 y javascript (sombras)

Gustavo81988
1/01/12 7:09
Saludos !!  Tengo un problema con este codigo de html

Este es el codigo html:

<!DOCTYPE HTML>
<html lang="en">

<head>
<meta charset="utf-8" />
<title> Gustavo's website </title>
<link rel="stylesheet" href="24-Main.css">
<script src="24-Script.js"></script>
</head>

<body>
<section>
<canvas id="canvas" width="2000" height="600">
</canvas>
</section>

</body>


</html>

Esta es la script

function dofirst(){
var x=document.getElementById('canvas');
canvas=x.getContext('2d');
canvas.shadowOffsetX=4;
canvas.shadowOffsetY =4;
canvas.shadowBlur=6;
canvas.shadowColor='blue';
canvas.font="bold 36px tahoma";
canvas.textAlign="end";
canvas.fillText("random text",300,100);
}

window.addEventListener("load",dofirst,false);

Funciona perfecto en internet explorer pero no me sirve en chrome tengo la version 16.0.912.63 espero que me puedan ayudar GRACIAS  =D.


Respuestas (1)

Alejandro Silvestri
1/01/12 19:56
Estimado, no soy experto en esto, pero me suena muy posible que la página haya terminado de cargarse antes de que se ejecute el script; y por lo tanto el evento load se dispara antes de que cuelgues tu listener.  Es perfectamente posible que esto no pase en Internet Explorer, porque es más lento para cargar las páginas.

Si tenés manera, luego del addEventListener poné algunas líneas más de código preguntando si la página ya está cargada.  Si ya se cargó, llamá dofirst directamente.

Por otro lado lo que yo vi es que se muy común poner los scripts al final del body, de manera que se ejecuten luego de que se ha leído la página completa.  En este caso ni necesitás colgarte al evento load, sino que ejecutás el contenido de dofirst() directamente.