Получите ошибку от promise.js - клонируйте объект HTML в IE11, используя Javascript и html2canvas - PullRequest
0 голосов
/ 07 мая 2018

ОБНОВЛЕНО - извините

Я работаю над панелью управления 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, так что это довольно сложно из-за ограничений. Я реализовал обещание.js, потому что IE11 не поддерживает функцию обещания.

Пример:

<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 голосов
/ 07 мая 2018

Непонятно, что вы спрашиваете здесь, но element.cloneNode поддерживается в т. Е. 11. Однако для клонирования всех его дочерних элементов вам нужно будет указать необязательный параметр true, просто убедитесь, что вы не случайно добавьте его в DOM и получите дубликаты идентификаторов.

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

  elementsToCanvas(clone);
}

Обновление: Исходя из вставляемого исключения, мне кажется, что это не имеет ничего общего с клоном, но тот факт, что Promise s не поддерживается на ie11. Попробуйте использовать условный polyfill .

...