gpt4 book ai didi

jquery - htmlpurifier 删除以 rgb 定义但不以十六进制定义的边框颜色

转载 作者:行者123 更新时间:2023-11-28 12:15:36 26 4
gpt4 key购买 nike

我遇到过 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);
}
}

关于jquery - htmlpurifier 删除以 rgb 定义但不以十六进制定义的边框颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19200653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com