2010-07-17 18 views
2

Lorsque j'exécute le code ci-dessous dans IE7/WinXP32, la sortie dans la console est "indéfinie". Les changements de sortie à l'attendu « getContext() », quand je fais soit de deux modifications:excanvas + Dojo: getContext n'est pas défini

  • -je supprimer la balise d'image.
  • J'utilise: < body onload = "dessiner()" >

Toute idée de ce qui se passe ici? Quelle peut être une solution de contournement?

<!DOCTYPE HTML PUBLIC 
    "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 

<html> 

<head> 
    <title>Canvas</title>   
    <script type="text/javascript"> 
    var djConfig = {parseOnLoad: false, isDebug: true}; 
    </script> 
    <script type="text/javascript" 
    src="/development/javascript/dojo-release-1.4.3-src/dojo/dojo.js"> 
    </script> 
    <!--[if IE]> 
    <script type="text/javascript" src="/javascript/excanvas_r73.js"></script> 
    <![endif]--> 
    <script type="text/javascript"> 
    function draw() { 
     var canvas = dojo.byId("canvas"); 
     console.log(canvas.getContext); 
    } 

    dojo.addOnLoad(draw); 
    </script> 
</head> 

<body> 
    <canvas id="canvas" width="100" height="100"></canvas> 
    <img src="nonexisting.gif"> 
</body> 

</html> 

Mise à jour: On dirait de remplacer "dojo.addOnLoad (draw);" avec le code suivant fait l'affaire.

function init() { 
    dojo.addOnLoad(draw); 
} 

if (dojo.isIE) { 
    dojo.connect('onload', init); 
} else { 
    init(); 
} 

Répondre

2

dojo.addOnLoad se déclenche avant document.onload. Je pense qu'il est associé à DOMContentLoaded. Peut-être excanvas fait-il son initialisation sur le même événement? Pouvez-vous utiliser document.onload?

+0

Merci d'avoir signalé cela! L'initialisation d'Explorer Canvas déclenche "onreadystatechange". – feklee