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 で 16 進値に設定しても、ブラウザー (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 に答える