1
我使用Google Chart作爲我的應用程序,我必須將生成的圖轉換爲圖像字節代碼。我已經在Firefox和Chrome中完成了這項工作,但是IE8沒有響應獲取svg元素,所以現在我無法從給定的div元素獲取字節碼。我的腳本div元素轉換成字節碼下面getElementsByTagName(...)。0.parentNode'爲空或不是對象
function getElement() {
for (var i = 0; i < divelement.length; i++) {
toImg(document.getElementById(divelement[i]), i, medicalconditionid[i]);
}
}
function toImg(chartContainer, i, id) {
var field = document.createElement("input");
field.type = "hidden";
field.id = "img_code" + i;
field.name = "imgcode";
document.getElementById("dynamicText").appendChild(field);
document.getElementById('img_code' + i).value = id + "_" + getImgData(chartContainer);
i++;
}
function getImgData(chartContainer) {
var chartArea = chartContainer.getElementsByTagName('svg')[0].parentNode;
var svg = chartArea.innerHTML;
var doc = chartContainer.ownerDocument;
var canvas = doc.createElement('canvas');
canvas.setAttribute('width', chartArea.offsetWidth);
canvas.setAttribute('height', chartArea.offsetHeight);
canvas.setAttribute(
'style',
'position: absolute; ' +
'top: ' + (-chartArea.offsetHeight * 2) + 'px;' +
'left: ' + (-chartArea.offsetWidth * 2) + 'px;');
doc.body.appendChild(canvas);
canvg(canvas, svg);
var imgData = canvas.toDataURL("image/png");
canvas.parentNode.removeChild(canvas);
return imgData;
}
給予我得到一個Line: 85 Error: 'getElementsByTagName(...).0.parentNode' is null or not an object
錯誤在IE8。
檢查「chartContainer」是否在您嘗試獲取其中的任何元素之前所期望的。只要做'console.log(chartContainer)'看看它是什麼。 – Archer
即時獲取預期的元素,但在firefox和克羅姆svg元素存在,並在IE8 IFrame元素存在。這就是問題 – Hariprasath
偉大 - 所以你可以從那裏拿它:) – Archer