Ich baue etwas namens "HTML Quiz". Es läuft komplett auf JavaScript und ist ziemlich cool.
Am Ende erscheint ein Ergebnisfeld mit der Aufschrift "Ihre Ergebnisse:" und zeigt an, wie viel Zeit sie gebraucht haben, wie viel Prozent sie bekommen haben und wie viele Fragen sie direkt von 10 bekommen haben. Ich hätte gerne eine Schaltfläche mit der Aufschrift "Ergebnisse erfassen" und irgendwie einen Screenshot oder etwas von der Div machen lassen und dann einfach das auf der Seite aufgenommene Bild anzeigen, auf das sie mit der rechten Maustaste klicken und "Bild speichern unter".
Ich würde das wirklich gerne tun, damit sie ihre Ergebnisse mit anderen teilen können. Ich möchte nicht, dass sie die Ergebnisse "kopieren", weil sie das leicht ändern können. Wenn sie ändern, was auf dem Bild steht, na ja.
Kennt jemand einen Weg, dies oder ähnliches zu tun?
quelle
Antworten:
Nein, ich kenne keine Möglichkeit, ein Element als "Screenshot" zu erstellen. Sie können jedoch die Quizergebnisse in ein Canvas-Element zeichnen und dann mithilfe der
HTMLCanvasElement
ObjektfunktiontoDataURL
einendata:
URI mit dem Bildinhalt abrufen.Wenn das Quiz beendet ist, gehen Sie folgendermaßen vor:
Wenn der Benutzer auf "Erfassen" klickt, gehen Sie wie folgt vor:
Dadurch wird eine neue Registerkarte oder ein neues Fenster mit dem "Screenshot" geöffnet, in dem der Benutzer ihn speichern kann. Es gibt keine Möglichkeit, eine Art "Speichern unter" -Dialog aufzurufen. Dies ist meiner Meinung nach das Beste, was Sie tun können.
quelle
img
das seine hatsrc
Satz an dendata:
URI. Dies ist jedoch nicht unbedingt erforderlich. Sie können dascanvas
selbst einfach in das Inline-Dialogfeld einfügen. Benutzer können mit der rechten Maustaste darauf klicken und den aktuellen Status als Bild speichern.Dies ist eine Erweiterung von @ Dathans Antwort unter Verwendung von html2canvas und FileSaver.js .
Dieser Codeblock wartet darauf, dass auf die Schaltfläche mit der ID
btnSave
geklickt wird. Wenn dieswidget
der Fall ist, konvertiert es das div in ein Canvas-Element und verwendet dann die Datei saveAs () FileSaver (über FileSaver.js in Browsern, die es nicht nativ unterstützen), um das div als Bild mit dem Namen "Dashboard.png" zu speichern.Ein Beispiel für diese Arbeit finden Sie in dieser Geige .
quelle
Nach stundenlanger Recherche habe ich endlich eine Lösung gefunden, um einen Screenshot eines Elements zu machen, auch wenn die
origin-clean
FLAG gesetzt ist (um XSS zu verhindern). Deshalb können Sie beispielsweise auch Google Maps (in meinem Fall) erfassen. Ich habe eine universelle Funktion geschrieben, um einen Screenshot zu erhalten. Das einzige, was Sie zusätzlich benötigen, ist die html2canvas-Bibliothek ( https://html2canvas.hertzen.com/ ).Beispiel:
Denken Sie daran
console.log()
undalert()
generieren Sie keine Ausgabe, wenn die Größe des Bildes groß ist.Funktion:
quelle
Wenn Sie das Dialogfeld "Speichern unter" wünschen, übergeben Sie das Bild einfach an das PHP-Skript, das die entsprechenden Überschriften hinzufügt
Beispiel "All-in-One" -Skript
script.php
quelle
Sie können keinen Screenshot machen: Es wäre ein unverantwortliches Sicherheitsrisiko, dies zuzulassen. Sie können jedoch:
quelle
Schauen Sie sich das HTML-Shot- Paket an und überprüfen Sie den clientseitigen Abschnitt gründlich :
quelle
Eine andere Alternative ist die Verwendung der JavaScript-API von GrabzIt. Sie müssen lediglich den CSS-Selektor des Divs übergeben, das Sie erfassen möchten. Es wird dann ein Screenshot von nur diesem Div erstellt.
Hier finden Sie weitere Beispiele zum Erfassen der Erfassung von HTML-Elementen . Für die vollständige Offenlegung bin ich der API-Ersteller.
quelle
Zitat
quelle
Es ist zu einfach, dass Sie diesen Code verwenden können, um den Screenshot eines bestimmten Bereichs zu erfassen, in dem Sie die Div-ID in html2canvas definieren müssen. Ich benutze hier 2 div-:
div id = "Auto"
div id = "chartContainer"
Wenn Sie nur Autos erfassen möchten, dann verwenden Sie Auto. Ich erbebe hier nur Auto. Sie können chartContainer für die Erfassung des Diagramms ändern. Html2canvas ($ ( '#car') Kopieren Sie diesen Code und fügen Sie ihn ein
quelle
document.getElementById('car')
oderdocument.querySelector('#car')
Soweit ich weiß, können Sie das nicht, ich kann mich irren. Allerdings würde ich dies mit PHP tun, ein JPEG mit PHP-Standardfunktionen erzeugen und dann das Bild anzeigen, sollte keine sehr schwierige Aufgabe sein, hängt jedoch davon ab, wie auffällig der Inhalt des DIV ist
quelle
Soweit ich weiß, ist dies mit Javascript nicht möglich.
Was Sie für jedes Ergebnis tun können, erstellen Sie einen Screenshot, speichern Sie ihn irgendwo und zeigen Sie dem Benutzer, wenn Sie auf Ergebnis speichern klicken. (Ich denke, kein Ergebnis ist nur 10, also keine große Sache, um ein 10-JPEG-Bild der Ergebnisse zu erstellen.)
quelle