我在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;
问题是,即使我使用 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);
}
}