我正在創建畫布並使用drawImage()繪製內聯svg。一切工作正常,但我卡住,因爲下面的問題...Onload()處理程序在IE中沒有響應
我的問題是,處理程序處理程序沒有在IE中響應? Rhis在FF和chhrome工作。我如何解決它在IE 9中向上工作?
img2.onload = function() {
console.log("load");
}
function createme() {
var test = $('<canvas />', { id : 'mycanvs' })
$('#album').append(test);
var svg2 = document.getElementById('sSource').innerHTML,
vms = test[0], //canvas
ctx2 = vms.getContext('2d');
svgToImage(svg2);
function svgToImage(svg2) {
var nurl = "data:image/svg+xml;utf8," + encodeURIComponent(svg2),
img2 = new Image;
alert("just before onload")
img2.onload = function() {
console.log("load"); // does not show
}
img2.src = nurl;
}
}
爲了澄清,修復'charset = utf-8'讓你從SVG創建圖像的一部分。但是......儘管你可以**將SVG繪製到畫布上,但在IE中,由於IE的安全限制,您無法**將畫布內容導出到具有'canvas.toDataURL'的圖像。 Chrome和FF沒有這種安全限制,您可以從這些瀏覽器獲取SVG內容的dataURL(並因此創建圖像)。 – markE 2015-04-04 06:27:44
@markE:感謝您的輸入。如果我需要能夠將畫布內容導出到IE中的圖像,那麼解決方案是什麼? – Becky 2015-04-04 07:43:46
我不認爲IE有直接的解決方案,因爲當svg被繪製時,畫布會立即受到污染。接下來的最佳解決方案是將svg發送回服務器並將其轉換爲.png(這不會污染畫布)。 – markE 2015-04-04 15:49:47