Как стать автором
Обновить

Мысли о скриншотах через JavaScript

Время на прочтение1 мин
Количество просмотров39K
При разработке одного сервиса я столкнулся с необходимостью дать возможность пользователям сообщать об ошибках. Проблема заключалась в том, чтобы пользователь мог сделать скриншот без использования стороннего софта или сервиса.

Сначала эта задача показалась мне невыполнимой, но я нашел html2canvas.


Скачать, посмотреть примеры и почитать подробнее можно тут. Вкратце: эта штука умеет создавать скриншот страницы в элементе canvas, а оформлена в виде jquery плагина.

К примеру вешаем на что-нибудь клик:
            $(document).ready(function() {
                $('#megaButton').live('click',function(){
                    //собственно включение самого html2canvas
                    $('body').html2canvas();
                    setTimeout("makeIT()", 1000)
                });
            });
            function makeIT()
            {
                //если на странице только один canvas, то можно так:
                var canvas = $('canvas')[0];
                //получаем картинку в base64
                var data = canvas.toDataURL('image/png').replace(/data:image\/png;base64,/, '');

                //все возникшие проблемы решились удалением canvas
                $('canvas').remove();

                //засылаем картинку на сервер
                $.post('saveCPic.php',{data:data}, function(rep){
                     alert('Изображение '+rep+' сохранено' );
                });
            }



в файле saveCPic.php все просто:
<?php
   //создаем какое-то имя, ну, например: 
   $name = time().'.png';
  //записываем, не забывая перекодировать из base64
  file_put_contents($name, base64_decode($_POST['data'] ));
  //отдаем обратно имя созданного файла 
  echo( $name );
?>


В результате этих нехитрых манипуляций по клику на сервере создается файл со скриншотом текущей страницы.

Эта статья не претендует на глобальное решение какой-либо задачи, но возможно она натолкнет кого-нибудь на интересные мысли или решит какую-нибудь проблему.
Теги:
Хабы:
Всего голосов 67: ↑63 и ↓4+59
Комментарии57

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн