添加回调函数到库

时间:2016-03-07 04:23:53

标签: javascript function callback

我正在使用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添加回调函数?

2 个答案:

答案 0 :(得分:0)

尽管修改这样的库是一种不好的做法,但是如果你决定这样做,那么在#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功能。

答案 1 :(得分:0)

这个问题显然已经解决了,我只想添加更多信息以便完成; o)

函数setColor()返回convertColors(),它有一个名为convertCallback()的回调函数,您可以使用它,因此无需在setColor()中创建自己的函数。 / p>

此外,如果您要在#177行之前添加一个回调,因为convertColors()尚未被调用,因此您将处理错误的颜色值。

BTW:@Horay,如果您仍然感兴趣的话,我更新了colorPicker的演示文稿(评论时)如何实现Lab滑块。