J'ai compressé bootstrap.min.js en utilisant django_compressor
l'icône de réduction de la barre de navigation ne s'affiche pas en raison d'une erreur d'analyse XML.
J'utilise bootstrap4, je n'ai pas rencontré un tel problème avec bootstrap3
j'ai vu la différence en utilisant inspect element dans firefox
Aucune erreur (sans compression)
.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")
}
cela donne une erreur XML (après compression)
.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")
}
Je peux confirmer que cela se produit toujours, malgré les changements dans # 828
J'utilise Django 2.0, Python 3.6, django-compresseur 2.2, Bootstrap 4.1.1
Le problème est causé par CSSMinFilter
En empruntant à une solution de contournement pour csscompressor , j'ai ajouté un filtre personnalisé pour envelopper rcssmin (remplacez CSSMinFilter dans settings.COMPRESS_FILTERS par la chaîne de chemin en pointillé vers ce filtre et changez le chemin callback
). Cela remplacera les espaces dans les URL de données par «% 20» avant de passer à rcssmin, ce qui empêche rcssmin de modifier les 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'
Ce problème a également été signalé à rcssmin .
Pour info, ce problème semble être un double du numéro 878.
Commentaire le plus utile
Je peux confirmer que cela se produit toujours, malgré les changements dans # 828
J'utilise Django 2.0, Python 3.6, django-compresseur 2.2, Bootstrap 4.1.1
Le problème est causé par
CSSMinFilter