2010-07-17 2 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 (draw);» следующий код делает трюк.

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

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

ответ

2

dojo.addOnLoad пожары перед документом.загрузка. Я думаю, что это связано с DOMContentLoaded. Возможно, excanvas выполняет свою инициализацию на одном и том же событии? Можете ли вы просто использовать document.onload?

+0

Спасибо, что указали это! Инициализация проводника проводника запускает «onreadystatechange». – feklee

Смежные вопросы