2012-12-19 34 views
5

我现在处于一种情况,我需要使用一些复杂的代码来处理Kinetic.js和canvas元素来处理IE8。任何使Kinetic.js支持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>元素,则可以使用webshims并且可以使用这些方法。但是,强制Kinetic.js使用单个画布元素会破坏其一些功能(因为它会动态创建画布对象)。

这是我的选择,以实现这一目标?

+0

可能是Chrome Frame可以帮到你吗? http://www.google.com/chromeframe?quickenable=true – Flot2011

+0

@ Flot2011这是一种可能性,谢谢。 – Alpha

+1

对于对此感兴趣的人 - http://fabricjs.com/可能值得考虑。它支持IE8(虽然我没有测试它的效果)。如果您对Canvas或SVG没有那么挑剔,请考虑http://raphaeljs.com/(IE8支持对基本载体很有用,但对文本和任何使用png图像作为填充的垃圾) – user568458

回答

3

简单的答案是“不”。

正如一位评论者所说,Google Chrome Frame是一个好的替代品,它必须将Chrome的渲染引擎安装为IE插件。

the excanvas project,听起来可能听起来不错。这是试图在VML(SVG)中实现画布,以便IE 6-8可以使用画布。

Excanvas是可怕的。特别是对于任何动画,它不能做一些画布图像处理的东西。并且在近4年内尚未更新。我强烈建议不要使用它,但它在那里供您考虑。

+0

谢谢。在回到您的问题之前,我确实尝试了WebShims,FlashCanvas,ExCanvas和其他混合选项(甚至修补Kinetic.js)。没有什么对我有用,所以我会接受我的失败。 – Alpha

+0

其悲伤但真实。不支持IE8是唯一现实的选择,如果你想真正利用所有帆布必须提供的优势,如KineticJS –

相关问题