[제나플러스] cheditor5 에디터 - 모바일, 파이어폭스(파폭) 색상 문제 해결 방법
페이지 정보
본문
cheditor5/cheditor.js 파일에서 아래 2가지를 수정/추가합니다.
1. 수정
changeFontColor 을 찾아 코드를 수정합니다. (빨강색 부분만 수정)
changeFontColor : function (color, type) {
if (type == 'BackColor' && !GB.browser.msie) {
type = 'HiliteColor';
}
this.doCmdPopup(type, this.colorConvert(color, 'hex'));
},
2. 추가
위 changeFontColor 코드 아래에 추가합니다. (사실 순서는 상관없습니다. 편한 곳에 붙여주세요,위아래 콤마주의)
changeFontColor : function (color, type) {
if (type == 'BackColor' && !GB.browser.msie) {
type = 'HiliteColor';
}
this.doCmdPopup(type, this.colorConvert(color, 'hex'));
},
colorConvert : function (color, which, opacity) {
if (!which) {
which = "rgba";
}
color = color.replace( /^\s*#|\s*$/g, "" );
if (color.length === 3) {
color = color.replace( /(.)/g, "$1$1" );
}
color = color.toLowerCase();
which = which.toLowerCase();
var colorDefs = [{
re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
process: function (bits) {
return [
parseInt(bits[1], 10),
parseInt(bits[2], 10),
parseInt(bits[3], 10),
1
];
}
},
{
re : /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d+(?:\.\d+)?|\.\d+)\s*\)/,
process: function (bits) {
return [
parseInt(bits[1], 10),
parseInt(bits[2], 10),
parseInt(bits[3], 10),
parseFloat(bits[4])
];
}
},
{
re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
process: function (bits) {
return [
parseInt(bits[1], 16),
parseInt(bits[2], 16),
parseInt(bits[3], 16),
1
];
}
},
{
re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
process: function (bits) {
return [
parseInt(bits[1] * 2, 16),
parseInt(bits[2] * 2, 16),
parseInt(bits[3] * 2, 16),
1
];
}
}
];
var r, g, b, a, i, re, processor, bits, channels, min, rData;
for (i = 0; i < colorDefs.length; i++) {
re = colorDefs[i].re;
processor = colorDefs[i].process;
bits = re.exec(color);
if (bits) {
channels = processor(bits);
r = channels[0];
g = channels[1];
b = channels[2];
a = channels[3];
}
}
r = (r < 0 || isNaN(r)) ? 0 : ((r > 255) ? 255 : r);
g = (g < 0 || isNaN(g)) ? 0 : ((g > 255) ? 255 : g);
b = (b < 0 || isNaN(b)) ? 0 : ((b > 255) ? 255 : b);
a = (a < 0 || isNaN(a)) ? 0 : ((a > 1) ? 1 : a);
function hex(x) {
return ("0" + parseInt(x).toString(16)).slice(-2);
}
switch (which) {
case "rgba":
if (opacity) {
a = (255 - (min = Math.min(r, g, b))) / 255;
r = (0 || (r - min) / a).toFixed(0);
g = (0 || (g - min) / a).toFixed(0);
b = (0 || (b - min) / a).toFixed(0);
a = a.toFixed(4);
}
rData = "rgba(" + r + "," + g + "," + b + "," + a + ")";
break;
case "rgb":
rData = "rgb(" + r + "," + g + "," + b + ")";
break;
case "hex":
rData = "#" + hex(r) + hex(g) + hex(b);
break;
}
return rData;
},
getElement : function (elem, tag) { // 다른 함수일 수도 있어요.
while (elem != null && elem.tagName != tag) {
if (elem.nodeName == 'BODY') break;
elem = elem.parentNode;
}
return elem;
},
while (elem != null && elem.tagName != tag) {
if (elem.nodeName == 'BODY') break;
elem = elem.parentNode;
}
return elem;
},
추천0
관련링크
댓글목록
등록된 댓글이 없습니다.