أهلا -
إذا أدخلت نصًا مع إرجاع بداخله ، فإن لقطة الشاشة لا تحتوي على المرتجعات [يبدو فقط مطويًا في سلسلة مع أحرف الإرجاع]. لقد استمريت في سحب هذا الرمز قبل بضعة أشهر [قل 3] أشهر. هل تم إصلاح ذلك أم أنه لا يزال يمثل مشكلة؟
لا تزال المشكلة ، لا يوجد تصحيح لوضع النصوص داخل input
s أو textarea
s بشكل أكثر دقة. ستحتاج إما إلى إنشاء نص Range
s والعثور على مواقعهم (حل أكثر دقة) أو مجرد حل كسول لتحويل الأسطر الجديدة إلى أسطر جديدة فعلية.
المشكلة واضحة على https://github.com/niklasvh/html2canvas/blob/master/src/Parse.js#L717
حسنًا شكرًا - ماذا سيترتب على الحل البطيء؟ لم أفكر بالتفصيل في تعديل التعليمات البرمجية الخاصة بك ، لذا سامحني إذا كان هذا سؤالًا غبيًا. لقد حاولت تحويل أحرف خط النهاية / n / r إلى أحرف تغذية سطر unicode والتي يمكن تمريرها إلى createTextNode () ولكن لا يبدو أنها تحدث أي فرق.
ربما تحتاج إلى قياس موضع كل سطر وتقديمها وفقًا لذلك.
لقد وجدت حلاً هنا: http://stackoverflow.com/questions/22317823/html2canvas-remove-multiple-spaces-and-line-break
تستخدم <div contenteditable="true"></div>
لاستبدال textarea
.
لكنني أستخدم الزاوية ويجب أن أكتشف مشكلة ng-model
.
UPD
لقد وجدت الحل المتعلق باستخدام ng-model
على "div" هنا: http://mehrantm.blogspot.com/2013/10/how-make-two-way-binding-to-your.html
آمل أن يساعد شخص ما ~
ربما يمكننا فقط استبدال textarea بـ div قبل استخدام html2canvas؟ وبعد ذلك نغير div للخلف
لقد قمت بحل هذه المشكلة باستخدام هذه الوظيفة:
$('textarea').each(function() {
if(!$(this).hasClass('d-none')){
$(this).replaceWith("<div contenteditable=\"true\">"+$(this).html()+"</div>")
}
});
الصق الوظيفة قبل استدعاء html2canvas وسيتم حل مشكلتك :)
التعليق الأكثر فائدة
ربما يمكننا فقط استبدال textarea بـ div قبل استخدام html2canvas؟ وبعد ذلك نغير div للخلف