KineticJS: Как заставить IE9 сохранить холст как изображение?
Я использую этот фрагмент, чтобы сохранить холст как изображение: когда я нажимаю на снимок кнопки, id="snap", открывается новая вкладка в FF (или в окне, в chrome) и вызывается изображение.
document.getElementById('snap').addEventListener('click', function () {
stage.toDataURL({
callback: function call (dataUrl) {
window.open(dataUrl);
},
mimeType: 'image/png',
quality: 1
})
});
Проблема в том, что IE9 выдает ошибку и не показывает файл. Ошибка говорит о том, что для открытия файла требуется программное обеспечение. Честно говоря, я не понимаю эту ошибку, о каком программном обеспечении говорит Microsoft? Если есть какое-либо решение или обходной путь, пожалуйста, помогите.
2 ответа
Похоже, что в настоящее время не существует решения сделать это полностью в JS в IE... Решение доступно здесь, используя запрос php:
http://danielmclaren.com/node/90
<?php
/**
* an example URL for viewing a base64-encoded image:
* http://example.com/decode.php?image/png;base64,iVBORw0KGgoAAAANS...
*/
$data = split(";", $_SERVER["QUERY_STRING"]);
$type = $data[0];
$data = split(",", $data[1]);
header("Content-type: ".$type);
echo base64_decode($data[1]);
?>
Я не тестировал это решение в IE, но оно отлично работает в Chrome 35.x.
Отобразите изображение в диалоговом окне jQueryUI и предложите пользователю выполнить щелчок правой кнопкой мыши, сохранить как.
Код страницы:
<script srv='jquery-ui.js'></script>
<div id='ImageExportDialog'></div>
Javascript:
$('#ImageExportDialog').dialog({autoOpen:false, modal:true});
Javascript:
document.getElementById('ImageExportDialog').src = canvas.toDataURL();