htmlpurifier удаляет цвет границы, определенный в rgb, но не в шестнадцатеричном

0

Я столкнулся с странным поведением с htmlpurifier:

Если у меня есть сложное определение границы, например

border: solid 10px rgb(00,00,00);

Он работает нормально. Теперь, если у меня граница разделена на подгруппы наподобие этого:

border-style: solid;
border-width: 10px;
border-color: rgb(00,00,00);

htmlpurifier полностью отбрасывает цвет, оставляя меня прозрачными границами (это мое поведение по умолчанию, когда цвет встроенного стиля не определен).

Чтобы добавить к странности, делать так, как показано ниже, отлично работает:

border-style: solid;
border-width: 10px;
border-color: #000000;

Проблема в том, что даже если я задал значение border-color шестнадцатеричному значению с помощью jQuery, браузер (chrome, firefox) по-прежнему отображает его как значение rgb, которое затем отбрасывается при сохранении.

ОБНОВИТЬ

И это становится еще более... это поведение только для IMG-тегов, получающих пограничный цвет, если я выполняю ту же операцию с тегом DIV, что он работает без проблем.

Теги:
image
border
htmlpurifier

1 ответ

0
Лучший ответ

Я решил свою проблему, создав составной атрибут границы каждый раз, когда устанавливаю цвет рамки, например:

        change: function(hex) {
            //console.log(hex + ' - ' + opacity);           
            var curObj = window.curObj; 
            var inner = '#' + $(curObj).attr("id") + ' .object_inner';
            $(inner).css('border-color', hex);

            //hack for chrome to get around htmlpurifier bug dropping border-color defined in rgb on IMG tags.
            var border_all = $(inner).css('border');

            if (border_all == '') { //ff returns empty string so we'll have to uild our own compound object
                var width = $(inner).css('border-top-width');
                var color = $(inner).css('border-top-color');
                $(inner).css('border','solid '+width+' ' + color);
            }
            else { //but for chrome it is enough to pull the compound out, then set it hard. The browser does the work.
                $(inner).css('border',border_all);
            }
        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню