Wie man screenshot von einem div mit JavaScript?
Ich bin Gebäude der so genannten "HTML-Quiz". Es ist ganz ran, die auf JavaScript und es ist ziemlich cool.
Am Ende eine Ergebnis-box öffnet sich, das sagt "Ihr Ergebnis:" und es zeigt, wie viel Zeit nahmen Sie sich, was Prozentsatz Sie haben, und wie viele Fragen Sie richtig aus der 10. Ich hätte gerne eine Schaltfläche, die sagt "Ergebnisse Erfassen" und haben es irgendwie einen screenshot machen oder so etwas in der div, und nur dann zeigen Sie das aufgenommene Bild auf der Seite, wo Sie können mit der rechten Maustaste und "Bild Speichern unter."
Ich würde wirklich lieben, um dies zu tun, so können Sie teilen Ihre Ergebnisse mit anderen. Ich will nicht, dass Sie "copy" die Ergebnisse, weil Sie leicht zu ändern. Wenn Sie ändern, was er sagt in der Bild, naja.
Kennt jemand einen Weg, dies zu tun, oder etwas ähnliches?
Schöner Artikel von HTML-Inhalten zu image convert and download codepedia.info/...
InformationsquelleAutor Nathan | 2011-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, ich weiß nicht, wie 'screenshot' auf ein element, aber was konnte Sie tun, ist ziehen Sie die quiz-Ergebnisse in ein canvas-element, dann verwenden Sie die
HTMLCanvasElement
ObjekttoDataURL
- Funktion, um einedata:
URI mit dem Bild-Inhalt.Wenn das quiz beendet ist, dies zu tun:
Wenn der Benutzer klickt auf "Capture", dies zu tun:
Dadurch öffnet sich ein neuer tab bzw. das Fenster mit dem 'screenshot', das dem Benutzer erlaubt, um es zu speichern. Es gibt keine Möglichkeit, rufen Sie eine "speichern unter" - dialog von Arten, so ist das die beste Sie tun können, meiner Meinung nach.
Versuchen Sie die Mozilla-Dokumentation, es ist wirklich ganz einfach zu Folgen: developer.mozilla.org/en/canvas_tutorial
Vielen Dank, es funktioniert in Chrome, Safari und IE9 auch? (Ich weiß nicht, ob IE9 hat sogar die Leinwand noch, nicht wahr?)
Nur fand heraus, dass - habe ich ausprobiert: developer.mozilla.org/samples/raycaster/RayCaster.html in den browser benutze ich Chrome, und es ist ziemlich cool.
Statt es zu öffnen in einem neuen Fenster/tab, öffne ich es in einem inline-Dialogfeld? (Wie die Fancybox lightbox plugin?)
InformationsquelleAutor Delan Azabani
Dies ist eine Erweiterung der @Dathan ' s Antwort, mit html2canvas und FileSaver.js.
Dieser code-block wartet auf die Schaltfläche mit der id
btnSave
geklickt werden. Wenn es ist, es wandelt diewidget
div, um ein canvas-element und verwendet dann die saveAs() FileSaver-Schnittstelle (via FileSaver.js in Browsern, die dies nicht unterstützen nativ) zum speichern der div als Bild mit dem Namen "Dashboard".png".Ein Beispiel für diese Funktion ist verfügbar in diesem fiddle.
Genial, sollte dies die akzeptierte Antwort. Einfaches plug n play.
Weißt du, wie das funktionieren würde mit three.js? Ich habe ein div, dass die three.js renderer / canvas wird in (renderer.domElement), und dann die divs auf der Oberseite, dass. Ich würde gerne einen snapshot der übergeordneten DIV-Element und alles erfassen, was? Ist das möglich? Danke!
Können Sie vermeiden Bild erscheint in Ihrem DOM? Kann es nicht einfach so zum download geht es hier sofort?
Die Geige tut man nicht alles!
InformationsquelleAutor Andy
Nach Stunden der Forschung, habe ich endlich eine Lösung gefunden, um einen screenshot von einem element, auch wenn die
origin-clean
- FLAG gesetzt ist (um zu verhindern, XSS), das ist, warum Sie können sogar erfassen, wie zum Beispiel Google Maps (in meinem Fall). Ich schrieb eine Universelle Funktion, um einen screenshot. Das einzige, was Sie brauchen, außerdem ist die html2canvas Bibliothek (https://html2canvas.hertzen.com/).Beispiel:
Beachten
console.log()
undalert()
nicht erzeugen einer Ausgabe, wenn die Größe des Bildes ist toll.Funktion:
Ich integrierte die Bibliothek html2canvas (siehe link in meinem post), bevor die Funktion getScreenshotOfElement() erreicht ist. Zum Beispiel mit dem <script>-tag. Laden Sie einfach html2canvas und kopieren Sie es zu Ihrem Projekt.
Ich bin immer noch nicht in der Lage zu erfassen-street-Bahnen, die von google-anzeigen. Dies nur screenshot der zoom-In-und out-Taste, Karte und Sat-text. können Sie bitte, helfen Sie erfassen alle anzeigen. Dank
InformationsquelleAutor orange01
Wenn Sie möchten, haben Sie auf "Speichern als" - dialog, geben Sie nur das Bild in php script, das fügt eine entsprechende überschrift
Beispiel "all-in-one" - Skript
script.php
InformationsquelleAutor shukshin.ivan
Können Sie nicht nehmen Sie ein screen-shot: es wäre ein unverantwortliches Sicherheitsrisiko zu lassen, so tun Sie dies. Sie können jedoch:
Sorry, ich habe zu kommentieren, es kommt von google, aber WTF "unverantwortlichen Sicherheitsrisiko" könnte ich Fragen, warum, wenn du javascript nehmen Sie einen screenshot oder eine Aufnahme innerhalb der gegebenen Schnüre und return der BASE64-codierte Daten als string Sicherheit kein problem
Ich konnte (zum Beispiel) ziehen, bis jemand die Facebook Seite in einem iframe und dann screenshot. Normalerweise ein cross-site-iframe nicht zugänglich DOM XSS verhindert werden, aber es wäre viel schwieriger für die browser-Hersteller damit aufhören, diese so zu Fall.
Das Javascript geben könnte, die Daten auf eine schädliche Quelle, ohne den Benutzer zu, selbst zu merken, während die "print screen" - gesteuert durch den Benutzer, und nicht in irgendeinem beliebigen nicht vertrauenswürdigen website.
Was für ein beat. @PiPeep, Wenn eine Webseite laden kann, bis ein iFrame von Facebook, es ist schon isoliert, warum nicht erweitern, eine solche Trennung mit einem screenshot-API? zB. Div.ToPNG(), wo die oben genannten iFrame ist whited? Es ist nicht ein unverantwortliches Sicherheitsrisiko, es ist nur nicht dort aufgebaut-und niemand hat gearbeitet, durch "Potenzial" Datenschutz/security-Probleme in den Entwicklungsländern wie eine eingebaute screenshot-API. Es wäre sehr nützlich für eine Vielzahl von Anwendungsfällen, wie beispielsweise die Unterstützung von intranet-web-Anwendungen zum Beispiel.
InformationsquelleAutor bgw
Werfen Sie einen Blick auf htmlshot Paket , dann prüfen Sie tief die client-Seite Abschnitt:
npmjs.com/package/htmlshot
geben Sie mir Ihre Anforderungen und sicher sein, dass ich Euch helfen .da ich der Autor dieser Bibliothek.
Danke @abdennour-toumi. Ich habe gerade ein npm installieren Sie einen Blick durch den code. Wie es aussieht ist mit html2canvas, die ich habe versucht und habe Probleme mit IE und durch die SVG ist und die Komplexität meiner Seite. So wird angezeigt, dass diese Bibliothek nicht mir helfen, dass in Bezug auf.
Ihr Kunde hat, um zu vermeiden, DH.. sagen Sie Ihnen, dass!
InformationsquelleAutor Abdennour TOUMI
Andere alternative ist die Verwendung GrabzIt ist JavaScript-API alles, was Sie tun müssen, ist, übergeben Sie der CSS-Auswahl div-Sie erfassen möchten. Es erstellt dann ein screenshot von eben, dass div.
Es gibt noch mehr Beispiele hier die Lösung, wie erfassen von HTML-Elementen. Für vollständige Offenlegung, ich bin die API-Ersteller.
InformationsquelleAutor GrabzIt
Zitat
InformationsquelleAutor fallen.lu
Soweit ich weiß können Sie das nicht tun, ich kann mich auch irren. Jedoch würde ich dies mit php erzeugen ein JPEG mit der php-standard-Funktionen und zeigen Sie dann das Bild, sollte nicht ein sehr harter job, aber hängt davon ab, wie Auffällig der Inhalt des DIV sind
Ja, ich kann mich nicht mit server-side Sachen, leider. Ich werde wahrscheinlich gehen Sie mit einer der oben genannten Antworten. Aber danke! 🙂
InformationsquelleAutor Saulius Antanavicius
Soweit ich weiß, das ist nicht möglich, mit javascript.
Was Sie tun können, für jedes Ergebnis einen screenshot erstellen, speichern Sie es irgendwo und der Benutzer bei anklicken der Schaltfläche Ergebnis speichern. (Ich denke mal kein Ergebnis ist nur 10, also kein großer deal zu erstellen 10 jpeg-Bild der Ergebnisse)
InformationsquelleAutor seoul