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">