IE Canvas dataURI安全错误

时间:2015-07-17 20:41:31

标签: javascript html canvas svg internet-explorer-10

我从DOM中获取一些SVG,将其转换为dataURI,将其作为图像绘制到canvas元素,然后读取图像数据的像素。这在chrome和FF中很好用,但是IE 10给了我一个安全错误。

This is a link to a codepen

这是JavaScript:

var SVG_DATA_IMG = 'data:image/svg+xml;base64, ';
var utf8_to_b64 = function(str) {
    str = str.replace(/\&nbsp\;/g, ' ');
    return window.btoa(unescape(encodeURIComponent(str)));
};
var svg = document.querySelector('#source-image');
var canvas = document.querySelector('#canv');
var ctx = canvas.getContext('2d');
var img = new Image();
img.crossOrigin = 'anonymous';

img.src = SVG_DATA_IMG + utf8_to_b64(svg.innerHTML);

document.querySelector('#img').appendChild(img);

img.addEventListener('load', function() {
   canvas.width = img.offsetWidth;
   canvas.height = img.offsetHeight;
   console.log('loaded', ctx, canvas);
   ctx.drawImage(img, 0, 0);
   var centerPix = ctx.getImageData(canvas.width / 2, canvas.height / 2, 1, 1).data;
   document.querySelector('#output').innerHTML = [ 
     'center pixel color is:', centerPix[0], centerPix[1], centerPix[2], centerPix[3] ].join(', ')
});

这是html:

<div id="source-image">
  <svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="250" width="250" viewBox="-1 -1 250 250">
    <g>
      <path id="uniqueDomId-195" fill="#C0504D" fill-opacity="1" stroke="#8C3836" stroke-opacity="1" stroke-width="1" stroke-linecap="flat" stroke-linejoin="round" d="M50,40 L60,87 12,92 42,129 0,146 37,174 12,201 55,203 55,241 84,203 97,221 109,193 129,211 136,179 166,193 164,159 211,174 184,139 203,126 191,104 241,74 181,72 201,37 161,64 164,2 129,47 109,22 97,72Z" transform="translate(0.5, 0.5)" ></path>
    </g>
  </svg>
</div>


<canvas id="canv"></canvas>

<div id="img"></div>

<br />
<p id="output"></p>

安全错误信息量不大: enter image description here

正如您所看到的,我正在尝试为图像设置crossOrigin值。我觉得必须有一个简单的解决方案。

更新

花了一段时间使用new Blob获取同一件事的blob版本并仍然得到相同的错误。

1 个答案:

答案 0 :(得分:1)

尝试:

Dim thisHeader ' As HeaderFooter
For Each thisHeader In thisSection.Headers
    thisHeader.Range.Paragraphs.TabStops.Add objWord.InchesToPoints(2.5)
Next

Capital&#34; A&#34;因为与&#34; a&#34;:Paragraphs

不一样