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;

问题是,即使我使用 jQuery 将边框颜色设置为十六进制值,浏览器(chrome、firefox)仍将其呈现为 rgb 值,然后在保存时将其删除。

更新

而且它变得更奇怪...这种行为仅在接收边框颜色的 IMG 标签上,如果我对 DIV 标签执行相同的操作,它可以正常工作。

4

1 回答 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);
            }
        }
于 2013-10-05T17:47:53.523 回答