更新 - 抱歉
我正在研究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创建一个克隆对象,而不对现有页面进行更改......但是它可以在不克隆对象但在现有页面上进行更改的情况下工作。请帮忙。
答案 0 :(得分:0)
目前尚不清楚你在这里问的是什么,但是11支持element.cloneNode
。但是要克隆它的所有孩子,你需要提供一个可选参数true
,只需确保你不小心将它添加到DOM并最终得到重复的id。
function screenshot() {
var clone = document.getElementById("masterContainer").cloneNode(true);
elementsToCanvas(clone);
}
更新:根据您粘贴的异常情况,我觉得与克隆无关,但ie11不支持Promise
s。考虑使用条件polyfill。