首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

IE 8 如何支持canvas

2013-10-17 
IE 8 怎么支持canvas最近做的一个项目要求把图片导出到word中我是使用amcharts 然后生成图片,这是svg的,然

IE 8 怎么支持canvas
最近做的一个项目要求把图片导出到word中


我是使用amcharts 然后生成图片,这是svg的,然后用一个js 把svg变成字符串 传到后台处理:下面是js

 // Extend AmCharts object
  AmCharts.getExport = function(id) {
         var wrapper       = document.getElementById(id);
         var svgs          = wrapper.getElementsByTagName('svg');
         var options       = {
             ignoreAnimation :   true,
             ignoreMouse     :   true,
             ignoreClear     :   true,
             ignoreDimensions:   true,
           offsetX         :   0,
            offsetY         :   0
        };
       var canvas        = document.createElement('canvas');
       var context       = canvas.getContext('2d');
        var counter       = {
           height            : 0,
            width             : 0
        }
     
        // Nasty workaround until somebody figured out to support images
        function removeImages(svg) {
            var startStr    = '<image';
            var stopStr     = '</image>';
            var stopStrAlt  = '/>';
           var start       = svg.indexOf(startStr);
            var match       = '';
     
            // Recursion
            if ( start != -1 ) {
                var stop = svg.slice(start,start+1000).indexOf(stopStr);
               if ( stop != -1 ) {
                    svg = removeImages(svg.slice(0,start) + svg.slice(start + stop + stopStr.length,svg.length));
                } else {
                    stop = svg.slice(start,start+1000).indexOf(stopStrAlt);
                    if ( stop != -1 ) {
                        svg = removeImages(svg.slice(0,start) + svg.slice(start + stop + stopStr.length,svg.length));
                    }
                }
            }
            return svg;
        };
        
        // Setup canvas
        canvas.height     = wrapper.offsetHeight;
        canvas.width      = wrapper.offsetWidth;
        context.fillStyle = '#FFFFFF';
        context.fillRect(0,0,canvas.width,canvas.height);


     
        // Add SVGs
        for(var i = 0; i < svgs.length; i++ ) {
            var container = svgs[i].parentNode;
            var innerHTML = removeImages(container.innerHTML); // remove images from svg until its supported
    
            options.offsetY = counter.height;
    
           counter.height += container.offsetHeight;
            counter.width = container.offsetWidth;
     
            canvg(canvas,innerHTML,options);
        }
     
        // Return output data URL
        return canvas.toDataURL();
    }




但是在使用IE8是报错 Object doesn't support property or method 'getContext',
请问怎么让IE8支持canvas,或者怎么把svg转换成jpg、png格式的图片再使用base64编码??
求指教 canvas?,svg?
[解决办法]
IE8不支持SVG,只能用VML。
IE8也不支持canvas。
你可以考虑给IE安装GoogleChromeFrame插件。
然后在HTML的head中加入<meta http-equiv="X-UA-Compatible" content="chrome=1">

热点排行