从promise.js收到错误 - 使用Javascript和html2canvas在IE11中克隆HTML对象

时间:2018-05-07 17:03:36

标签: javascript html exception clone html2canvas

更新 - 抱歉

我正在研究DC.js仪表板,我正在尝试提供屏幕截图功能。目前我开发了一个名为DIV id的按钮,其中包含其中的所有图表并将SVG转换为Canvas,因此我可以使用HTML2Canvas进行屏幕截图。虽然在这个过程中,我必须为图表提供内联样式才能使其工作,所以我必须创建一个克隆对象,它不会在现有页面上进行更改。当我单击按钮时,我在Developer Tool的控制台页面上收到此错误。错误是..

"Possible Unhandled Promise Rejection: TypeError: Unable to get property 'removeAttribute' of undefined or null reference."

我必须在IE11上工作,所以由于局限性,这是一种挑战。我确实实现了promise.js,因为IE11不支持promise功能。

示例:

<div id="masterContainer"> 
    ... 'all the html, svg, etc. elements  to create the charts'
</div>

在Javascript中,我有一个调用masterContainer的按钮并执行其过程。

function screenshot() {
  var getContainer = $('#masterContainer');  
  var cloneObject = getContainer.clone();  -- I want to clone this div object along with the elements inside it.

  elementsToCanvas(cloneObject);  -- This is a function where it takes that html object and convert all the svgs, ect. to canvas. Also takes the cloneObject and apply it to html2canvas;
}

我只是想为那个masterContainer创建一个克隆对象,而不对现有页面进行更改......但是它可以在不克隆对象但在现有页面上进行更改的情况下工作。请帮忙。

1 个答案:

答案 0 :(得分:0)

目前尚不清楚你在这里问的是什么,但是11支持element.cloneNode。但是要克隆它的所有孩子,你需要提供一个可选参数true,只需确保你不小心将它添加到DOM并最终得到重复的id。

function screenshot() {
  var clone = document.getElementById("masterContainer").cloneNode(true);

  elementsToCanvas(clone);
}

更新:根据您粘贴的异常情况,我觉得与克隆无关,但ie11不支持Promise s。考虑使用条件polyfill