【问题标题】:WebShim canvas and IE8 document readyWebShim 画布和 IE8 文档准备就绪
【发布时间】:2014-03-19 08:33:19
【问题描述】:

我正在使用 webshim 让画布在 IE8 中工作。

所有绘图功能大部分都运行良好,但由于某种原因,当我使用 $.webshims.polyfill('canvas'); 时,我的文档就绪处理程序没有触发。

我尝试使用 jQuery 的 $()$.webshims.ready('canvas', function() {,但似乎都没有工作。

如果我打开控制台并手动运行$.webshims.isReady('canvas'),它会返回false。如果我只使用setTimeout 然后运行我的代码,一切都会正确绘制,所以画布似乎已加载。

我用来加载画布的代码:

window.FlashCanvasOptions = { disableContextMenu: true };

$.webshims.setOptions( 'canvas', { type: 'excanvas' } );

$.webshims.polyfill('canvas');  

有什么想法吗?

【问题讨论】:

  • 愚蠢的问题,但是您打开控制台并查看是否有任何错误或日志?你用的是真正的IE8还是IE10?
  • 日志中完全没有错误 - 使用真正的 IE8。奇怪的是我有一个测试用例,其中$() 正在工作,如果我在一段时间后开始绘图,我的主要项目可以正常工作,尽管我显然不能依赖setTimeout。一旦我删除了$.webshims.polyfill('canvas');$() 就可以工作了,所以它肯定与 polyfill 有关。
  • 这很奇怪。作为一种解决方法,您可以使用 webshim.setOptions('waitReady', false);。要调试这个东西,你可以简单地在 excanvas 文件的第 35 行和第 937 行设置两个断点(使用 dev 文件夹中的那个)。提示:你也可以在 IE8 模式下使用 IE9。
  • 酷,谢谢。我会检查并回复你。
  • 关于这个的任何消息???

标签: html canvas internet-explorer-8 webshim


【解决方案1】:

如果您已更改为不同的 excanvas 版本。只需获取此版本并在文件末尾复制以下代码:

(function(document){
webshims.addReady(function(context, elem){
    if(context == document){
        if(window.G_vmlCanvasManager && G_vmlCanvasManager.init_ ){
            G_vmlCanvasManager.init_(document);
        }
    }
    webshims.$('canvas', context).add(elem.filter('canvas')).each(function(){
        var hasContext = this.getContext;
        if(!hasContext && window.G_vmlCanvasManager){
            G_vmlCanvasManager.initElement(this);
        }
    });
});
webshims.isReady('canvas', true);
})(document);

【讨论】:

  • 您使用的是标准 excanvas 的修改版本吗?这很有意义 - 我会在大约 12 小时内通知您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多