html2canvas + toBlob для IE создает пустой png - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть некоторый SVG-контент внутри div, который я хотел бы сохранить и скачать как png.Я использую html2canvas, чтобы преобразовать содержимое div в холст, а затем сохранить его.Приведенный ниже код хорошо работает для Firefox, Chrome, Edge, но НЕ для Internet Explorer 11. Загрузка происходит в IE, но когда я открываю файл, все становится пустым.

Дело в том, что я слежу закуча других предыдущих примеров для IE точно, и все, кажется, работает для них.

JSFiddle: https://jsfiddle.net/65wzoq3n/14/ (Обратите внимание, что в скрипте ни один из загруженных pngs не имеет никакого содержимого внутри. Но в моем локальном браузере, Chrome и Firefox будут работать).

Предыдущие записи:

Png файл не загружается в Internet Explorer при использовании html2canvas.js в Jquery

Загрузить холст в Image в IE, используя Javascript

<button type="button" onClick="download()">Download</button>
<div id="tester" style="width:600px;height:250px;"></div>

<script>
function download() {
    html2canvas(TESTER, {
        width:600,
        height:250
    }).then(function(canvas) {
        if (canvas.msToBlob) { //for IE
           var img = canvas.msToBlob();
           window.navigator.msSaveBlob(img, 'file-name.png');
        }
        else { // for everything else
           saveAs(canvas.toDataURL(), 'file-name.png');
        }
    });
}


function saveAs(uri, filename) {

   var link = document.createElement('a');

   if (typeof link.download === 'string') {
      link.href = uri;
      link.download = filename;

      //Firefox requires the link to be in the body
      document.body.appendChild(link);

      //simulate click
      link.click();

      //remove the link when done
      document.body.removeChild(link);

   } else {
      window.open(uri);
   }
}
...