Я столкнулся с странным поведением с 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, что он работает без проблем.
Я решил свою проблему, создав составной атрибут границы каждый раз, когда устанавливаю цвет рамки, например:
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);
}
}