canvg toDataURL не работает в IE11 [duplicate]

2017 ответ: теперь вы можете делать то, что хотите, в каждом текущем браузере и узле

. Это довольно просто:

  • Вернуть обещание
  • Используйте 'await' , в котором JavaScript ожидает, что обещание будет разрешено в vlue (например, hTTP-ответ)
  • Добавьте 'async' для родительской функции

Вот рабочая версия вашего кода:

(async function(){

var response = await superagent.get('...')
console.log(response)

})()

ожидание поддерживается во всех текущих браузерах и узлах 8 [/ д2]

8
задан Krumia 7 August 2014 в 10:59
поделиться

4 ответа

IE не поддерживает ни навигацию к URI данных, ни атрибут download. Вы можете использовать navigator.msSaveBlob для сохранения файла для IE 10+. Вы можете проверить window.navigator.msSaveBlob и написать специальный код IE, иначе использовать существующий код для сохранения файла. Вы можете проверить следующую ссылку для получения дополнительной информации: Сохранение файлов локально с помощью Blob и msSaveBlob

1
ответ дан Amjad Aziz 27 August 2018 в 02:03
поделиться

IE не поддерживает тег download .

Существует уродливый хак, который вы можете использовать.

  • Создайте невидимый iframe:
    <iframe id="dummy" style="display:none; visibility:hidden"></iframe>
    
  • Запишите ваши данные в iframe document:
    var ifd = document.getElementById('dummy').contentDocument;
    ifd.open('text/plain', 'replace');
    ifd.write('whatever you want to be in the file');
    ifd.close();
    
  • Используйте execCommand для сохранения файл (на самом деле, чтобы вызвать диалог сохранения):
    ifd.execCommand('SaveAs', true, 'request.bin');
    

Обратите внимание, что execCommand не работает в IE11. Я знаю, что почти невозможно обнаружить браузер совершенно правильно. Однако вы можете попробовать это как подпрограмму резервного копирования, если сбой файла в вашем коде.

2
ответ дан Community 27 August 2018 в 02:03
поделиться

Я думаю, что это связано с anch.get(0).click();, не поддерживаемым всеми браузерами специально для якорей hidden, поэтому вы можете попробовать использовать следующий код,

anch.get(0).show().focus().click().hide();
2
ответ дан Dharmesh Patel 27 August 2018 в 02:03
поделиться

Загрузить атрибут НЕ поддерживается в IE и iOS Safari

IE & lt; 10:

Команда SaveAs , использующая execCommand , может сделать трюк, выполнив загрузку содержимого элемента.

Минусы:

  • Проблемы в некоторых версиях IE, запущенных на Win7 [я не знаю, исправлено ли это здесь]
  • Нужен элемент DOM для хранения данных

IE> = 10

Используя msSaveBlob , это метод, который позволяет сохранять Blob или File, отправив эти заголовки:

Content-Length: <blob.size>
Content-Type: <blob.type>
Content-Disposition: attachment;filename=<defaultName>
X-Download-Options: noopen

Проверить Сохранение файлов локально с помощью Blob и msSaveBlob

Минусы:

  • Нужно определить a Blob

Другое браузеров

Если вы не хотите реализовать все это самостоятельно, есть хорошая библиотека FileSaver.js для сохранения сгенерированных файлов на стороне клиента. Он поддерживает Firefox, Chrome, Chrome для Android, IE 10+, Opera и Safari. Для IE & lt; 10 есть вилка библиотеки, которая добавляет saveTextAs для сохранения текстовых файлов (.htm, .html, .txt)

Решение кросс-браузеров

Сценарий на стороне сервера, который получает имя файла, данные, тип meme, затем отправляет файл с заголовком Content-Disposition: attachment; filename=FILENAME

18
ответ дан Kos 27 August 2018 в 02:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: