Internet Explorer中的Canvas元素在运行时添加不起作用

时间:2011-03-24 14:57:48

标签: javascript internet-explorer canvas internet-explorer-9

我正在尝试绘制一些画布元素,当然,我需要它在Internet Explorer中工作。所以我做了一些搜索并使用explorercanvas来获得该功能。但我发现,由于某种原因,IE对初始页面加载后添加的canvas元素不满意。

下面的示例有两个canvas元素,一个在页面的HTML中,另一个在DOM ready上添加。在画布上绘制的脚本仅适用于脚本运行之前存在的元素。

Linky

我尝试使用IE调试器来查明发生了什么,我看到,对于HTML画布,$(this)[0]返回DispHTMLGenericElement,但运行时画布返回DispHTMLUnknownElement。我也尝试过使用document.getElementByID(),同样的事情发生了。这是IE处理canvas元素的另一个奇怪之处吗?有办法吗?

1 个答案:

答案 0 :(得分:2)

来自Explorer Canvas的“说明”文件:

  

如果您动态创建了canvas元素,则不会将getContext方法添加到元素中。要使其正常工作,您需要在G_vmlCanvasManager对象上调用initElement。

     var el = document.createElement('canvas');
     G_vmlCanvasManager.initElement(el);
     var ctx = el.getContext('2d');
  

多数民众赞成。现在,您可以使用Canvas的HTML5规范作为参考。