javascript - getElementsByTagName(...).0.parentNode' 为 null 或不是对象

标签 javascript jquery svg internet-explorer-8 bytecode

我的应用程序使用 Google Chart,我必须将生成的图表转换为图像字节代码。我已经在 Firefox 和 Chrome 中完成了此操作,但是 IE8 没有响应获取 svg 元素,所以现在我无法从给定的 div 元素获取字节码。下面给出了我将 div 元素转换为字节代码的脚本

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;
}

我收到线路:85 错误:IE8 中的“getElementsByTagName(...).0.parentNode”为 null 或不是对象错误。

最佳答案

我发现 IE8 中不支持 svg 或 canvas 元素,因此 javascript 图表库(例如 google Charts、D3 和 jqplot)会将图表转换为 vml 格式,因此我们无法像上面的代码那样获取字节码。在我的应用程序中,谷歌图表可以生成已弃用的图像格式图表,但我使用了此图像图表并将图像 url 发送到操作类并将 url 转换为图像。请参阅this谷歌图像图表链接

关于javascript - getElementsByTagName(...).0.parentNode' 为 null 或不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19542549/

相关文章:

javascript - 在alasql(AngularJS)的SQL语句中使用 "AS"子句

javascript - Bootstrap 切换复选框在 ng-view 中不起作用

jquery - 将 JSON 对象传递给操作并映射到 List<object>?

html - 在元素周围均匀生成阴影/轮廓,而不产生模糊效果

javascript - 如何通过按 javascript/svg 中的按钮将形状的半径设置为更大或更小

javascript - angular-formly multiCheckbox 全选

JavaScript 媒体查询

javascript - Jquery inArray 返回 false

html - SVG 文本在 Firefox 和 Chrome 上的显示方式不同

javascript - function F() { if (!(this instanceof F)) { return new F() }; ... }