Html2canvas: Textbereiche haben keine Benutzer-Zeilenumbrüche, wenn ein Screenshot erstellt wird

Erstellt am 26. März 2012  ·  6Kommentare  ·  Quelle: niklasvh/html2canvas

Hi -

Wenn ich Text mit Rückgaben einfüge, enthält der Screenshot keine Rückgaben [sieht nur in einer Zeichenfolge mit den Wagenrückläufen zusammengeklappt aus]. Ich habe diesen Code vor ein paar [sagen wir 3] Monaten gezogen. Wurde das behoben oder ist das immer noch ein Problem?

Bug

Hilfreichster Kommentar

vielleicht können wir nur textarea durch div ersetzen, bevor wir html2canvas verwenden? und danach das div zurück ändern

Alle 6 Kommentare

Es ist immer noch ein Problem, es gab keinen Patch, um Texte innerhalb von input s oder textarea s genauer zu positionieren. Müssen entweder Text Range s erstellen und ihre Positionen finden (genauere Lösung) oder nur eine faule Lösung, um neue Zeilen in tatsächliche neue Zeilen umzuwandeln.

Das Problem ist offensichtlich auf https://github.com/niklasvh/html2canvas/blob/master/src/Parse.js#L717

Ok danke - was würde die faule Lösung bedeuten? Ich habe mich nicht im Detail mit der Änderung Ihres Codes befasst, also verzeihen Sie mir, wenn dies eine dumme Frage ist. Ich habe versucht, die Endzeilenzeichen /n/r in Unicode-Zeilenvorschubzeichen umzuwandeln, die an createTextNode() übergeben werden können, aber es schien keinen Unterschied zu machen.

Sie müssten wahrscheinlich die Position für jede Zeile messen und sie entsprechend rendern.

Ich habe hier eine Lösung gefunden: http://stackoverflow.com/questions/22317823/html2canvas-remove-multiple-spaces-and-line-break
Es verwendet <div contenteditable="true"></div> um textarea zu ersetzen.

Aber ich benutze Angular und ich muss das ng-model Problem herausfinden.

UPD
Die Lösung zur Verwendung von ng-model auf einem `div' habe ich hier gefunden: http://mehrantm.blogspot.com/2013/10/how-make-two-way-binding-to-your.html
Hoffe es kann jemandem helfen~

vielleicht können wir nur textarea durch div ersetzen, bevor wir html2canvas verwenden? und danach das div zurück ändern

Ich habe dieses Problem mit dieser Funktion gelöst:

        $('textarea').each(function() {
            if(!$(this).hasClass('d-none')){
                $(this).replaceWith("<div contenteditable=\"true\">"+$(this).html()+"</div>")
            }
        });

Fügen Sie die Funktion vor dem Aufruf von html2canvas ein und Ihr Problem wird gelöst :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen