<p>html2canvas funktioniert nicht, wenn der HTML-Code ein Canvas-Element enthält</p>

Erstellt am 13. Dez. 2017  ·  29Kommentare  ·  Quelle: niklasvh/html2canvas

Fehlerberichte:

Ich verwende html2canvas in einem Reaktionsprojekt. Ich habe festgestellt, dass html2canvas nicht funktioniert, wenn html ein Canvas-Element enthält. Der Canvas-Bereich wird leer angezeigt.

Spezifikationen:

Dies ist das HTML-Bild
image

Dies ist die Konvertierung in Leinwandbild

image

Im Canvas-Bereich verwende ich 'Echarts-for-React', um eine Radarkarte zu zeichnen. Aber wenn ich auf die Schaltfläche Bilder generieren klicke, ist das Download-Bild nicht vollständig

  • html2canvas-Version getestet mit: 1.0.0-alpha.4
  • Browser & Version: Chrome 60.0.3112.7
  • Betriebssystem: Fenster
Bug

Hilfreichster Kommentar

Ich habe versucht, removeContainer: false hinzuzufügen, aber das Problem besteht immer noch auf Mobile Chrome

Alle 29 Kommentare

Ich habe das gleiche Problem.

Könnten Sie ein Beispiel für jsfiddle geben?

gleiches Problem. Ich habe Diagramme auf der Seite, sie werden nicht mehr gerendert. wird zum Rendern in der vorherigen Version verwendet

Ich habe eine Geige erstellt, um das Problem zu zeigen
https://jsfiddle.net/outerbound/v7p71wzr/

Dies funktioniert nicht auf Chrome :(, ich kann auf Safari bestätigen, dass es funktioniert :)

Problem ist das Entfernen des Containerformulars DOM vor dem Rendern

Ich habe das gleiche Problem. Marker...

Möglicherweise kann html2canvas nicht mit gridstack.js arbeiten

Hatte das gleiche Problem mit der Verwendung von chart.js mit vue (vue-chart.js) und es passiert nur in Chrome

Ich habe das gleiche Problem, html2canvas kann nicht mit gridstack.js arbeiten. Wenn ich html2canvans mit gridstack verwende, werden alle Elemente oben gestapelt.
image

@ Nemo0915 Ich baue eine jsfiddle mit gridstack.js, aber es funktioniert gut. Vielleicht ist das nicht das Problem von gridstack.js, aber ich bin mir nicht sehr sicher.

Das gleiche Problem, Firefox ist in Ordnung, aber Chorme kann nicht funktionieren

@bigfacewo danke für deine Antwort, es ist der Screenshot deiner jsfiddle, die Schaltfläche wurde ebenfalls nach oben gestapelt und das Ergebnis ist das gleiche, ob in FF oder Chrome.
image

@ Nemo0915 Ich fand die 0.5.0-Beta4-Version normal, jsfiddle . Der Screenshot ist:
qq 20171220150328
Die 1.0.0-alpha4-Version, jsfiddle , kann nicht auf Chrome funktionieren, aber ich habe das Problem nicht gefunden, dass die Elemente oben gestapelt wurden. Dies ist der Screenshot von Firefox:
qq 20171220150946

Chrome-Version: 63.0.3239.108
Firefox-Version: 57.0.2

Sie können die Option hinzufügen: removeContainer: false, um dieses Problem vorübergehend zu beheben ....

Danke @IxAres , es löst mein Problem.

Ich habe versucht, removeContainer: false hinzuzufügen, aber das Problem besteht immer noch auf Mobile Chrome

@ Niklasvh es funktioniert überhaupt nicht. Ich verwende Version 1.0.0-rc.5 dieser Anwendung.
Screenshot 2020-02-17 at 10 54 42 AM

Hey, welche Lösung?

2020 ist das Problem immer noch da.

+1 Ich sehe auch dieses Verhalten.

Problem besteht immer noch

Das Problem mit dem Browser Chart.js und Firefox 76.0 (64-Bit) besteht weiterhin

Hey, da bekomme ich das gleiche Problem mit Mapbox im Element. Kannst du bitte hier helfen?
Ich habe auch removeContainer versucht: false, aber es hat bei mir nicht funktioniert.

@ Rajeshgtstpl Ich hatte ein ähnliches Problem mit Mapbox. Ich habe es gelöst, indem ich preserveDrawingBuffer: true in den Mapbox-Optionen gesetzt habe.

Ich verwende Chart.js nicht, hatte aber das gleiche Problem mit Leinwänden, auf denen ich drawImage verwendet habe. Das Problem wurde behoben, indem image.crossOrigin = 'anonym' in das Bildelement eingefügt wurde, bevor es an drawImage übergeben wurde.

image.crossOrigin = 'anonymous'

Hoffe es kann jemandem helfen :)

Hallo Leute, ich habe ein ähnliches Canvas-Exportproblem, aber mit einer ThreeJS-Szene irgendwelche Empfehlungen? Ich habe es mit der Version 1.0.0-rc.7 versucht, aber sie exportiert alles außer der Canvas von ThreeJS.

EDIT: Ich habe versucht, die drei js Leinwand wie folgt hinzuzufügen:

image

Habe aber diesen Fehler bekommen:

image

@AchoArnold preserveDrawingBuffer: true hat für mich für Mapbox gearbeitet, danke.

Frage: Haben Sie einen Leistungseinbruch bemerkt?

Ich verwende Chart.js nicht, hatte aber das gleiche Problem mit Leinwänden, auf denen ich drawImage verwendet habe. Das Problem wurde behoben, indem image.crossOrigin = 'anonym' in das Bildelement eingefügt wurde, bevor es an drawImage übergeben wurde.

image.crossOrigin = 'anonymous'

Hoffe es kann jemandem helfen :)

es hat mir das Leben gerettet, danke

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen