我们可以在IE7和IE8上使用canvas.toDataURL吗?

时间:2011-10-04 09:41:58

标签: javascript canvas

我正在使用canvas对象的toDataURL()方法。它适用于IE9和Chrome。 但它不支持IE7和IE8。我找到了这个链接

https://github.com/sampula/SVG.toDataURL/commit/9b59af148b7f14d41974cf318eed6f84c8c91062

它将SVG扩展为使用toDataURL()。但在实现中,它再次使用canvas.toDataURL()。我正在使用Google的API(jquery.flot.js)绘制所有图形图。但它也使用画布绘制图形。所以,SVG不是一个选择。

我有办法使用canvas.toDataURL()或类似的IE7和IE8。

提前致谢

2 个答案:

答案 0 :(得分:3)

IE7 / 8不支持Canvas或SVG。

但是它确实支持VML,这是一种类似于SVG的矢量语言,并且有许多基于javascript的黑客攻击,使用其VML功能在这个旧版浏览器中模拟Canvas和SVG。

最着名的IE-Canvas黑客就是这个:http://code.google.com/p/explorercanvas/

我自己没有花太多时间,所以我无法保证它是否可以执行特定的功能,例如您所询问的toDataURL()方法,但如果您不能这样做有了这个,那么根本不可能。

我提到VML-> SVG也有类似的工具。如果您对此感兴趣,那么您可能需要查看以下内容:http://code.google.com/p/svg2vml/

请记住,无论这些黑客多么聪明,总会有一个基本的性能问题。 IE7 / 8的javascript解释器在现代标准下非常慢,而且这些是基于javascript的工具,试图将非常现代的功能强加到这个旧浏览器中。它们可能很好用,但是不要试图用你的画布或SVG做任何太聪明的事情,否则你会杀掉浏览器。

最后,既然你提到你正在使用这一切来绘制图形,我将指出Raphael库的图形模块。 Raphael是一个在所有浏览器上绘制SVG图形的库(回归到IE的VML)。图形模块提供了所有常用的图形类型,包含在一个非常易于使用的JavaScript API中。它完全兼容跨浏览器 - 它适用于所有桌面浏览器,从最新的Chrome和Firefox开始,一直到IE6。如果您在使用现在使用的工具的跨浏览器兼容性方面遇到困难,可能需要切换到此库。

希望有所帮助。

答案 1 :(得分:2)

我最近创建了一个应用程序,我必须使用toDataURL(),但我无法在IE7 / 8中找到任何方法。我的应用程序是一个在线图像编辑器,用户可以在其中保存画布内容。我相信我们无法在IE7 / 8中使用这种方法。