(آسف ، أنا لا أجيد اللغة الإنجليزية)
أهلا،
أنا أستخدم هذا البرنامج النصي الرائع لتقديم علامات SVG
يوجد بعض تداخل النص عند عرض علامة النص في SVG على لوحة الرسم
تتم معالجة علامة النص كعقدة نص وأيضًا كعقدة SVG
يمكنك أن ترى ذلك بسهولة مع خاصية التحويل
إليك عينة من الكود (باستخدام html2canvas 0.5.0-alpha2)
<html>
<head>
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="js/html2canvas.js"></script>
</head>
<body>
<svg width="100" height="100">
<g transform="translate(20,20)">
<text dy=".45em" y="10" x="0" dx="-.8em" transform="translate(0,0) rotate(-70)" style="font-size:12px;">Text</text>
</g>
</svg>
<script>
$(document).ready(function() {
html2canvas(document.body, {
onrendered: function(canvas) {
document.body.appendChild(canvas);
}
});
})
</script>
</body>
</html
وها هو تغييري السريع
NodeParser.prototype.getChildren = function(parentContainer) {
return flatten([].filter.call(parentContainer.node.childNodes, renderableNode).map(function(node) {
var container = [node.nodeType === Node.TEXT_NODE && node.parentElement.tagName !== "text" ? new TextContainer(node, parentContainer) : new NodeContainer(node, parentContainer)].filter(nonIgnoredElement);
return node.nodeType === Node.ELEMENT_NODE && container.length && node.tagName !== "TEXTAREA" ? (container[0].isElementVisible() ? container.concat(this.getChildren(container[0])) : []) : container;
}, this));
};
آمل أن يساعد هذا
شكرا # Hyojin. هذا يساعدني.
شكرا ، ساعدني كثيرا!
شكرا لإصلاحك!
يمكنك أيضًا التحقق من tspan tagName:
node.nodeType === Node.TEXT_NODE && node.parentElement.tagName! == "text" && node.parentElement.tagName! == "tspan"
ncoquelet لقد قمت بتحديث الكود الخاص بي. شكرا!
تضمين التغريدة
بعد اختباره على IE ، لا يعمل الإصلاح الخاص بك لأن الخاصية parentElement
لا يتم ملؤها في العقدة الحالية. استخدم parentNode
بدلاً من ذلك! على أي حال ، سيكون الأمر أكثر وضوحًا لأننا في NodeParser
ونتحدث عن العقدة.
بخلاف ذلك ، بدلاً من ذلك ، اختبر اسم العلامة ، وقمت بتغيير الكود الخاص بي لاختبار مثيل parentNode
ومعالجة العقدة الحالية لديها TextContainer
فقط إذا كانت العقدة الأم ليست SVGElement
.
يعمل على الكروم و ie11. على Firefox لا يمكنني اختباره بسبب خطأ قماش فارغ!
رمز بلدي
NodeParser.prototype.getChildren = function(parentContainer) {
return flatten([].filter.call(parentContainer.node.childNodes, renderableNode).map(function(node) {
var container = [node.nodeType === Node.TEXT_NODE && !(node.parentNode instanceof SVGElement) ? new TextContainer(node, parentContainer) : new NodeContainer(node, parentContainer)].filter(nonIgnoredElement);
return node.nodeType === Node.ELEMENT_NODE && container.length && node.tagName !== "TEXTAREA" ? (container[0].isElementVisible() ? container.concat(this.getChildren(container[0])) : []) : container;
}, this));
};
آمل أن يساعد هذا.
أصلح مشكلتي في Firefox ، ويعمل على ff أيضًا :-)
اكثر وضوحا!
لقد تحققت أيضًا من أنه يعمل بشكل جيد في صص.
لقد دمجت الإصلاح وتم تحديث طلب السحب. شكرا :)
hyojin بفضلncoquelet للتحقيق في هذا الأمر والإصلاح. واجهت نفس المشكلة بالضبط في ذلك اليوم ولم أكن متأكدًا تمامًا من سببها.
لست متأكدًا من المكان الذي أشعر فيه بالارتباك هنا ولكني أحصل على استثناء على أنه "خطأ مرجعي غير معلوم: لم يتم تعريف NodeParser"
@ Suchetana10 متى حصلت على الاستثناء؟ في تحميل البرنامج النصي؟
@ hyojin شكرا .. عملت لي
hyojin شكرا! يعمل بشكل مثالي بالنسبة لي أيضًا
happyvishwasvadavi ugnugen يسعدني سماع ذلك! :)
لا يزال بعض الأشخاص يواجهون مشكلة في عنصر النص ، فأنا أغير هذه المشكلة وسأرسل العلاقات العامة مرة أخرى.
هل لدى أي شخص تصميم مكتبة به هذا الإصلاح الذي يمكنني اختباره؟ مشاهدة نفس المشكلة على صفحة Highcharts ..
هل هذا البناء متاح مع الإصلاح؟ ما زلت أواجه هذه المشكلة مع Highcharts.
هل هذا الإصلاح متوفر في البناء أم يتعين علينا إنشاء تجاوز؟
تم إغلاق هذه المشكلة تلقائيًا نظرًا لعدم وجود استجابة لطلبنا للحصول على مزيد من المعلومات من المؤلف الأصلي. مع المعلومات الموجودة حاليًا في المشكلة فقط ، ليس لدينا معلومات كافية لاتخاذ إجراء. يُرجى التواصل إذا كان لديك أو اعثر على الإجابات التي نحتاجها حتى نتمكن من إجراء مزيد من التقصي.
عزيزي niklasvh ،
شكرا لك على هذه المكتبة الرائعة. يمكنني إعادة إظهار هذه المشكلة بأحدث إصدار - v1.0.0-rc.3
لقد قمت بإنشاء مثال على CodePen هنا (Chrome فقط) حيث سترى أن بعض العقد النصية (في عنوان الرسم البياني) مكررة.
خطوات التكاثر -
تمت إضافة عناوين الرسم البياني في السطر رقم 193
hyojin ، هل
يعتبر،
كاران
مرحبًا @ karannagupta
هل يمكنك تجربة فرعي للتحقق مما إذا كان يأتي من نفس السبب؟
مرحبًا hyojin
مع إصدار المكتبة الخاص بك (v0.5.0-alpha2) لا يعمل. يمكنك اختبار مكتبتك على قلمي هنا
أود أيضًا استخدام أحدث إصدار من html2canvas. لا أحتاج أيضًا إلى استخدام html2canvas.svg حينئذٍ.
يعتبر،
كاران
تبين أنها مشكلة في خطوط Unicode
التعليق الأكثر فائدة
تضمين التغريدة
بعد اختباره على IE ، لا يعمل الإصلاح الخاص بك لأن الخاصية
parentElement
لا يتم ملؤها في العقدة الحالية. استخدمparentNode
بدلاً من ذلك! على أي حال ، سيكون الأمر أكثر وضوحًا لأننا فيNodeParser
ونتحدث عن العقدة.بخلاف ذلك ، بدلاً من ذلك ، اختبر اسم العلامة ، وقمت بتغيير الكود الخاص بي لاختبار مثيل
parentNode
ومعالجة العقدة الحالية لديهاTextContainer
فقط إذا كانت العقدة الأم ليستSVGElement
.يعمل على الكروم و ie11. على Firefox لا يمكنني اختباره بسبب خطأ قماش فارغ!
رمز بلدي
آمل أن يساعد هذا.