SVG 颜色更新脚本在桌面上不起作用,但在移动设备上工作



我的javascript(以及几乎所有的编码技能(知识都很糟糕,但我正在使用Sonata Admin Bundle开发一个使用Symfony构建的应用程序。

我的问题是,我刚刚发现了一个似乎只影响桌面浏览器的错误。

我有一个显示图像的字段,图像颜色会根据用户的选择进行更改。

这在移动设备上运行良好,一直有效(上次检查是在一周前(,但由于某种原因,它在台式机上停止了工作。

适用于:iPhone(Safari和Chrome(&iPad(Safari和Chrome(

不起作用:Macbook(Safari和Chrome(&微软(Chrome、Edge和FF(

以下是负责更改图像颜色的代码:

<script>
$(document).ready(function () {
var logos = {};
{% for image in images %}
var image{{ image.id }} = '{{ image.content|raw }}';
logos['logo-' + {{image.id}}] = image{{ image.id }};
{% endfor %}
$('.target').parent('div').append("<div id='image_preview'></div>");
var container = $("#image_preview");
{# apply selected colors to image preview #}
function applyColors() {
$('.defaul_image_color').each(function () {
if ($(this).val() != 'FFFFFF') {
$('path.' + $(this).data('param')).css('fill', $(this).val())
}
})
}
{# display image and apply colors #}
function displayImage() {
if ($('.target option:selected').val()) {
container.html(eval('image'+$('.target option:selected').val()));
applyColors();
} else {
container.html('');
}
}
displayImage();
{# trigger on color or image change #}
$('.defaul_image_color, .target').on('change', function () {
displayImage();
});
$('#select2-results-5').bind('DOMSubtreeModified', function () {
$('#select2-results-5 li .select2-result-label').each(function () {
if (logos[$(this).text()] != undefined && !$(this).has('svg').length) {
$(this).prepend('<span class="svg_list">' + logos[$(this).text()] + '</span>');
}
})
});
});
</script>

我不是想偷懒,但我不知道从哪里开始解决这个问题,这样你就可以登录我的测试帐户来直接检查问题:

http://adminstage.3w1.website/admin/admin-customer-theme/167/edit用户:topsellerz1234@gmail.compw:1234

问题在于所选徽标图像的渲染。设置->主题->编辑主题->徽标选项卡

谢谢你在这方面的帮助。

我不确定是否是这种情况,但尝试使用rgb()颜色格式而不是hexa。

解决此问题的方法是在填充值前面加上"#"。我不知道为什么我的代码在没有它的情况下工作了好几年。如果有人能解释为什么它停止工作,为什么它在手机上没有它也能工作,我会把它标记为答案。

最新更新