Я строю то, что называется "HTML Quiz". Он полностью работает на JavaScript и это довольно круто.
В конце появляется окно результатов с надписью «Ваши результаты», и оно показывает, сколько времени они заняли, какой процент они получили, и сколько вопросов они получили сразу из 10. Я хотел бы иметь кнопку, которая говорит «Захват результатов» и пусть он каким-то образом делает снимок экрана или что-то из div, а затем просто показывает изображение, захваченное на странице, где они могут щелкнуть правой кнопкой мыши и «Сохранить изображение как».
Я действительно хотел бы сделать это, чтобы они могли поделиться своими результатами с другими. Я не хочу, чтобы они «копировали» результаты, потому что они могут легко это изменить. Если они изменят то, что написано на картинке, да ладно.
Кто-нибудь знает способ сделать это или что-то подобное?
источник
Ответы:
Нет, я не знаю, как «скриншотить» элемент, но что вы могли бы сделать, это нарисовать результаты теста в элемент canvas, а затем использовать функцию
HTMLCanvasElement
объекта,toDataURL
чтобы получитьdata:
URI с содержимым изображения.Когда тест закончен, сделайте это:
Когда пользователь нажимает «Захват», сделайте это:
Откроется новая вкладка или окно с «скриншотом», что позволит пользователю сохранить его. Нет никакого способа вызвать диалоговое окно «сохранить как», так что, на мой взгляд, это лучшее, что вы можете сделать.
источник
img
который имеет свойsrc
набор кdata:
URI. Тем не менее, это не является необходимым - вы можете просто поместитьcanvas
себя в встроенное диалоговое окно; пользователи могут щелкнуть по нему правой кнопкой мыши и сохранить текущее состояние в виде изображения.Это расширение ответа @ Dathan , используя html2canvas и FileSaver.js .
Этот блок кода ожидает нажатия кнопки с идентификатором
btnSave
. Когда это так, он преобразуетwidget
div в элемент canvas и затем использует интерфейс FileAsaver saveAs () (через FileSaver.js в браузерах, которые его не поддерживают изначально), чтобы сохранить div в виде изображения с именем «Dashboard.png».Пример этой работы доступен на этой скрипке .
источник
После нескольких часов исследований я наконец нашел решение сделать скриншот элемента, даже если установлен
origin-clean
FLAG (для предотвращения XSS), поэтому вы даже можете захватывать, например, Google Maps (в моем случае). Я написал универсальную функцию, чтобы получить скриншот. Кроме того, вам нужна только библиотека html2canvas ( https://html2canvas.hertzen.com/ ).Пример:
Имейте в виду
console.log()
иalert()
не будет генерировать вывод, если размер изображения велик.Функция:
источник
Если вы хотите иметь диалог «Сохранить как», просто передайте изображение в скрипт php, который добавляет соответствующие заголовки
Пример сценария "все в одном"
script.php
источник
Вы не можете сделать снимок экрана: было бы безответственным риском для безопасности позволить вам сделать это. Тем не менее, вы можете:
источник
Взгляните на пакет htmlshot , затем внимательно проверьте раздел на стороне клиента :
источник
цитата
источник
Это просто, вы можете использовать этот код для захвата скриншота определенной области, вы должны определить div id в html2canvas. Я использую здесь 2 div-:
div id = "car"
div id = "chartContainer",
если вы хотите захватывать только автомобили, тогда используйте car. Я собираю здесь только автомобили, вы можете изменить chartContainer для захвата графика html2canvas ($ ( '#car') скопируйте и вставьте этот код
источник
document.getElementById('car')
илиdocument.querySelector('#car')
Насколько я знаю, вы не можете этого сделать, я могу ошибаться. Однако я бы сделал это с php, сгенерировал бы JPEG с использованием стандартных функций php и затем отобразил изображение, это не должно быть очень трудной работой, однако зависит от того, насколько ярким является содержимое DIV.
источник
Насколько я знаю, это невозможно с javascript.
Что вы можете сделать для каждого результата - создать скриншот, сохранить его где-нибудь и указать пользователю, когда нажмете сохранить результат. (Я думаю, что нет результата только 10, так что нет ничего страшного в создании 10 JPEG изображения результатов)
источник