Django-compressor: XML-Analysefehler in der SVG-Bild-URL nach der Komprimierung

Erstellt am 26. Mai 2018  ·  2Kommentare  ·  Quelle: django-compressor/django-compressor

Ich habe bootstrap.min.js mit django_compressor komprimiert

Das Symbol zum Reduzieren der Navigationsleiste wird aufgrund eines XML-Analysefehlers nicht gerendert.
Ich benutze Bootstrap4, ich hatte kein solches Problem mit Bootstrap3

Ich sah den Unterschied mit Inspect Element in Firefox

Kein Fehler (ohne Komprimierung)

.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")
}

Dies führt zu einem XML-Fehler (nach der Komprimierung).

.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

Hilfreichster Kommentar

Ich kann bestätigen, dass dies trotz der Änderungen in # 828 immer noch geschieht

Ich verwende Django 2.0, Python 3.6, Django-Compressor 2.2, Bootstrap 4.1.1

Das Problem wird durch CSSMinFilter

Alle 2 Kommentare

Ich kann bestätigen, dass dies trotz der Änderungen in # 828 immer noch geschieht

Ich verwende Django 2.0, Python 3.6, Django-Compressor 2.2, Bootstrap 4.1.1

Das Problem wird durch CSSMinFilter

Ausgehend von einer Problemumgehung für callback ). Dadurch werden Leerzeichen in Daten-URLs durch "% 20" ersetzt, bevor sie an rcssmin übergeben werden, wodurch verhindert wird, dass rcssmin die URLs beschädigt.

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'

Dieses Problem wurde auch an rcssmin gemeldet.

Zu Ihrer Information, dieses Problem scheint ein Duplikat von # 878 zu sein.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen