如何让Kinetic.js支持IE8?

5

我现在处于这样一种情况,需要使用Kinetic.js和canvas元素处理一些复杂的代码,以便在IE8上运行。

官方上来说,Kinetic.js没有支持IE8的计划。

我尝试使用webshims lib,但Kinetic.js在以下代码上失败:

Kinetic.Canvas = function(width, height) {
    this.element = document.createElement('canvas');
    this.context = this.element.getContext('2d'); //<-- Error here

    // set dimensions
    this.element.width = width;
    this.element.height = height;
};

错误信息为“对象不支持属性或方法'getContext'”。对我来说这很有意义,因为我不认为由IE8文档创建的canvas元素会实现canvas元素的方法,但是如果<canvas>元素已经创建,webshims将会起作用,您可以使用这些方法。然而,强制Kinetic.js使用一个单一的canvas元素将破坏它的某些功能(因为它会即时创建canvas对象)。
那么,我应该怎么做才能解决这个问题呢?

也许Chrome框架可以帮到您?http://www.google.com/chromeframe?quickenable=true - Flot2011
@Flot2011 可能性很大,谢谢。 - Alpha
1
对于那些感兴趣的人 - http://fabricjs.com/ 可以考虑一下。它支持IE8(虽然我没有测试过它的表现如何)。如果你不介意使用Canvas或SVG,还可以考虑http://raphaeljs.com/(IE8对基本向量的支持很好,但对文本和使用png图像作为填充的任何东西都很差)。 - user56reinstatemonica8
1个回答

3
简单的答案是“不行”。
正如一位评论者所提到的,Google Chrome Frame是一个可以接受的替代方案,它基本上是将Chrome的渲染引擎作为IE插件安装。
还有excanvas项目,听起来可能不错。它是为了在VML(SVG)中实现画布,以便IE 6-8可以使用画布。
Excanvas很糟糕,尤其是在任何动画方面,而且它无法做一些画布图像处理工作。而且它已经有近4年没有更新了。我强烈建议不要使用它,但是供您考虑。

谢谢。在回答你的问题之前,我尝试了WebShims、FlashCanvas、ExCanvas和其他混合选项(甚至修补了Kinetic.js),但都没有成功。所以我将接受失败。 - Alpha
很遗憾但却是事实。如果你想真正利用Canvas所提供的所有功能,就像KineticJS一样,不支持IE8是唯一现实的选择。 - Simon Sarris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接