我现在的情况是,我需要一些复杂的代码来处理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>
元素,webshim 就会播放,您可以使用这些方法。但是,强制 Kinetic.js 使用单个画布元素会破坏其某些功能(因为它会动态创建画布对象)。
为了实现这一点,我有哪些选择?
简单的答案是"否"。
正如一位评论员所提到的,Google Chrome Frame是一个OK的替代品,它基本上需要将Chrome的渲染引擎安装为IE插件。
有一个excanvas项目,一开始听起来可能不错。这是在VML(SVG)中实现canvas的尝试,以便IE 6-8可以使用canvas。
Excanvas很糟糕。特别是对于任何动画,它不能做一些画布图像处理的东西。而且它已经将近 4 年没有更新了。我强烈建议不要使用它,但它供您考虑。