2010-07-17 50 views
2

当我在IE7/WinXP32中执行下面的代码时,控制台中的输出为“undefined”。输出的变化与预期“的getContext()”,当我提出要么的两处修改:excanvas + Dojo:getContext未定义

  • 我删除图像标记。
  • 我用:<身体的onload = “抽()” >

任何想法是怎么回事?什么可能是解决方法?

<!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> 

更新:看起来像替换“dojo.addOnLoad(绘制);”用下面的代码就可以做到这一点。

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

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

回答

2

dojo.addOnLoad在document.onload之前触发。我认为它与DOMContentLoaded关联。也许excanvas在同一事件上进行初始化?你可以使用document.onload吗?

+0

感谢您指出了这一点! Explorer Canvas的初始化会触发“onreadystatechange”。 – feklee 2010-07-18 09:02:27