Django-compressor: خطأ في تحليل xml في عنوان url الخاص بصورة svg بعد الضغط

تم إنشاؤها على ٢٦ مايو ٢٠١٨  ·  2تعليقات  ·  مصدر: django-compressor/django-compressor

لقد قمت بضغط bootstrap.min.js باستخدام django_compressor

لا يتم عرض رمز طي شريط التنقل بسبب خطأ في تحليل XML.
أنا أستخدم bootstrap4 ، لم أواجه مثل هذه المشكلة مع bootstrap3

رأيت الفرق باستخدام فحص العنصر في Firefox

لا خطأ (بدون ضغط)

.navbar-dark .navbar-toggler-icon {
    background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")
}

هذا يعطي خطأ XML (بعد الضغط)

.navbar-dark .navbar-toggler-icon {
    background-image: url("data:image/svg+xml;charset=utf8,%3CsvgviewBox='003030'xmlns='http://www.w3.org/2000/svg'%3E%3Cpathstroke='rgba(255,255,255,0.5)'stroke-width='2'stroke-linecap='round'stroke-miterlimit='10'd='M47h22M415h22M423h22'/%3E%3C/svg%3E")
}
bug

التعليق الأكثر فائدة

أستطيع أن أؤكد أن هذا لا يزال يحدث ، على الرغم من التغييرات في # 828

أنا أستخدم Django 2.0 و Python 3.6 و django-compressor 2.2 و Bootstrap 4.1.1

سبب المشكلة هو CSSMinFilter

ال 2 كومينتر

أستطيع أن أؤكد أن هذا لا يزال يحدث ، على الرغم من التغييرات في # 828

أنا أستخدم Django 2.0 و Python 3.6 و django-compressor 2.2 و Bootstrap 4.1.1

سبب المشكلة هو CSSMinFilter

بالاقتراض من حل بديل لـ callback ). سيؤدي هذا إلى استبدال المسافات في عناوين URL للبيانات بـ "٪ 20" قبل التسليم إلى rcssmin الذي يمنع rcssmin من تغيير عناوين URL.

def compress(css, **kwargs):
    capture_svg = re.compile(r'url\("(data:image/svg.*?svg%3[Ee])\"\)')
    data_urls = re.findall(capture_svg, css)
    for data_url in data_urls:
        css = css.replace(data_url, data_url.replace(' ', '%20'))
    css = cssmin(css, **kwargs)
    return css


class CSSMinFilter(CallbackOutputFilter):
    callback = 'myapp.core.utils.compress'

تم أيضًا الإبلاغ عن هذه المشكلة إلى rcssmin .

لمعلوماتك ، يبدو أن هذه المشكلة نسخة مكررة من رقم 878.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات