向库中添加回调函数
我正在使用color.js,并且我正在尝试向setColor
添加回调函数。我下面的代码添加line #177前:向库中添加回调函数
if (_instance.options.setColorCallback) {
_instance.options.setColorCallback(convertColors(type, save ? colors : undefined));
}
这工作得很好很好,但是当我尝试使用setColor
使用Lab
颜色格式问题。当我这样做时,回调函数不会执行。以下是我setColor
如何使用Lab
色彩空间:(Source)
if (type === 'Lab') {
var factor = (e.clientX - startPoint.left)/currentTargetWidth;
factor = factor > 1 ? 1 : factor < 0 ? 0 : factor;
myColor.colors.Lab[mode] = (mode === 'L') ? factor * 100 : (factor * 255) - 128;
myColor.setColor(null, 'Lab');
}
我如何添加一个回调函数来setColor
?
虽然这是一个不好的做法,修改这样的库,但如果你已经决定在线#177这样做,然后,而不是做这件事线#204,并更换
function convertColors(type, colorObj) {
与
function convertColors(type, colorObj) {
var convertResult = __convertColors(type, colorObj);
if (_instance.options.afterColorsConvert) {
_instance.options.afterColorsConvert(convertResult);
}
return convertResult;
}
function __convertColors(type, colorObj) {
这是因为setColor包装在第76行并且在setColor的两个代码定义中都使用了convertColors,所以它最好扩展convertColors功能。
感谢您的回答!但我有2个问题。 1 - 为什么修改这样的库是不好的做法? 2 - 如果我这样做,每次我转换颜色时都会调用回调函数。我希望它只在我使用'setColor'时被调用。 – Horay
这是一种不好的做法,因为如果发布了较新版本的库,则无法升级到该版本,除非您将现有版本中的所有修补程序都更新到新版本。其次,我查看了colors.js的源代码,并看到convertColors在库外部不可访问,并且只有setColors在内部使用此方法。 –
这个问题显然是解决了,我只是想多一些信息添加到它完成; O)
功能setColor()
返回convertColors()
至极确实有所谓convertCallback()
一个回调函数,您可以使用,所以有没有必要在setColor()
中创建自己的。
此外,如果您要在#177行之前添加一个回调,因为convertColors()
还没有被调用,因此您会处理错误的颜色值。
顺便说一句:@Horay,我用演示更新了colorPicker(out评论)如何实现Lab滑块,如果你还有兴趣的话。
你的意思是你在* 177行之后和178行之前添加了它* – Bergi