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();

Другие вопросы по тегам