画布+ Dojo:getContext 未定义

发布于 2024-09-10 04:47:47 字数 1304 浏览 8 评论 0原文

当我在 IE7/WinXP32 中执行下面的代码时,控制台中的输出是“未定义”。当我进行以下两项修改中的任意一项时,输出将更改为预期的“getContext()”:

  • 删除图像标签。
  • 我使用:

知道这是怎么回事吗?解决方法可能是什么?

<!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();
}

When I execute the code below in IE7/WinXP32, then the output in the console is "undefined". The output changes to the expected "getContext()", when I make either of two modifications:

  • I remove the image tag.
  • I use: <body onload="draw()">

Any idea what is going on here? What may be a workaround?

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

Update: Seems like replacing "dojo.addOnLoad(draw);" with the following code does the trick.

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉世弥音 2024-09-17 04:47:47

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

dojo.addOnLoad fires before document.onload. I think it's associated with DOMContentLoaded. Perhaps excanvas does its initialization on the same event? Can you just use document.onload?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文