【问题标题】:Canvas elements in Internet Explorer added at runtime not working在运行时添加的 Internet Explorer 中的画布元素不起作用
【发布时间】:2011-06-07 14:11:28
【问题描述】:

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

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

Linky

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    就是这样。现在您可以使用 Canvas 的 HTML5 规范作为参考。

    【讨论】:

    • 谢谢!另外,通过阅读 Explorer Canvas 的“说明”页面上的 cmets,我发现添加画布时需要使用 document.createElement 而不是 $('')。
    猜你喜欢
    • 2015-05-03
    • 2016-10-15
    • 1970-01-01
    • 2016-06-19
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2013-06-13
    相关资源
    最近更新 更多