Saya sedang membangun sesuatu yang disebut "Kuis HTML". Ini sepenuhnya dijalankan pada JavaScript dan itu cukup keren.
Pada akhirnya, kotak hasil muncul yang mengatakan "Hasil Anda:" dan itu menunjukkan berapa banyak waktu yang mereka ambil, berapa persen yang mereka dapatkan, dan berapa banyak pertanyaan yang mereka dapatkan dari 10. Saya ingin memiliki tombol yang mengatakan "Capture hasil" dan minta entah bagaimana mengambil tangkapan layar atau semacamnya dari div, dan kemudian hanya menunjukkan gambar yang diambil pada halaman di mana mereka dapat mengklik kanan dan "Simpan gambar sebagai."
Saya benar-benar ingin melakukan ini sehingga mereka dapat membagikan hasilnya kepada orang lain. Saya tidak ingin mereka "menyalin" hasilnya karena mereka dapat dengan mudah mengubahnya. Jika mereka mengubah apa yang tertulis di gambar, oh well.
Adakah yang tahu cara melakukan ini atau yang serupa?
sumber
Jawaban:
Tidak, saya tidak tahu cara untuk 'screenshot' elemen, tapi apa yang bisa Anda lakukan, adalah gambar hasil kuis menjadi elemen kanvas, kemudian gunakan
HTMLCanvasElement
objektoDataURL
fungsi untuk mendapatkandata:
URI dengan isi gambar itu.Ketika kuis selesai, lakukan ini:
Ketika pengguna mengklik "Ambil", lakukan ini:
Ini akan membuka tab atau jendela baru dengan 'tangkapan layar', memungkinkan pengguna untuk menyimpannya. Tidak ada cara untuk memohon semacam dialog 'simpan sebagai', jadi ini yang terbaik yang dapat Anda lakukan menurut saya.
sumber
img
yang telahsrc
ditetapkan kedata:
URI. Namun, itu tidak benar-benar diperlukan - Anda bisa meletakkannyacanvas
sendiri di kotak dialog inline; pengguna dapat mengklik kanan dan menyimpan status saat ini sebagai gambar.Ini adalah perluasan dari jawaban @ Dathan , menggunakan html2canvas dan FileSaver.js .
Blok kode ini menunggu tombol dengan id
btnSave
untuk diklik. Ketika itu, ia mengubahwidget
div ke elemen kanvas dan kemudian menggunakan antarmuka saveAs () FileSaver (melalui FileSaver.js di browser yang tidak mendukungnya secara native) untuk menyimpan div sebagai gambar bernama "Dashboard.png".Contoh kerja ini tersedia di biola ini .
sumber
Setelah berjam-jam penelitian, saya akhirnya menemukan solusi untuk mengambil tangkapan layar elemen, bahkan jika
origin-clean
FLAG diatur (untuk mencegah XSS), itu sebabnya Anda bahkan dapat menangkap misalnya Google Maps (dalam kasus saya). Saya menulis fungsi universal untuk mendapatkan tangkapan layar. Satu-satunya hal yang Anda butuhkan adalah perpustakaan html2canvas ( https://html2canvas.hertzen.com/ ).Contoh:
Ingat
console.log()
danalert()
jangan hasilkan jika ukuran gambarnya bagus.Fungsi:
sumber
Jika Anda ingin memiliki dialog "Simpan sebagai", cukup kirimkan gambar ke skrip php, yang menambahkan header yang sesuai
Contoh skrip "all-in-one"
script.php
sumber
Anda tidak dapat mengambil tangkapan layar: risiko keamanan yang tidak bertanggung jawab akan membuat Anda melakukannya. Namun, Anda dapat:
sumber
Lihatlah paket htmlshot , lalu, periksa secara mendalam bagian sisi klien :
sumber
kutipan
sumber
Sederhananya, Anda dapat menggunakan kode ini untuk menangkap tangkapan layar area tertentu yang harus Anda tentukan id id di html2canvas. Saya menggunakan di sini 2 div-:
div id = "mobil"
div id = "chartContainer"
jika Anda ingin hanya menangkap mobil maka gunakan mobil saya tangkap di sini mobil saja Anda dapat mengubah chartContainer untuk menangkap grafik html2canvas ($ ( '#car') salin dan tempel kode ini
sumber
document.getElementById('car')
ataudocument.querySelector('#car')
Sejauh yang saya tahu Anda tidak bisa melakukan itu, saya mungkin salah. Namun saya akan melakukan ini dengan php, menghasilkan JPEG menggunakan fungsi standar php dan kemudian menampilkan gambar, seharusnya tidak menjadi pekerjaan yang sangat sulit, namun tergantung pada seberapa mencolok isi DIV
sumber
Sejauh yang saya tahu tidak mungkin dengan javascript.
Apa yang dapat Anda lakukan untuk setiap hasil membuat tangkapan layar, menyimpannya di suatu tempat, dan mengarahkan pengguna saat mengklik simpan hasil. (Saya kira tidak ada hasil hanya 10 jadi bukan masalah besar untuk membuat 10 jpeg gambar hasil)
sumber