这是我的imgSelectArea代码:

ias = $('#<%=imgMain.ClientID%>').imgAreaSelect({
                handles: true,
                autoHide: false,
                minChars: 0,
                autoFill: true,
                selectOnly: true,
                mustMatch: true,
                instance: true,
                onInit: function (img, selection) {
                    $("#tagBox").css('display', 'none');
                },
                onSelectEnd: function (img, selection) {
                    $("#tagBox").show();
                    var x1 = selection.x1;
                    var y1 = selection.y1;
                    var x2 = selection.x2;
                    var y2 = selection.y2;
                    var position = $('#<%=imgMain.ClientID%>').position();
                }
            });


这可以正常工作,但我想知道imgSelectArea关闭的时间,即当您单击覆盖区域时,我想得到通知。我在文档中找不到这个。

这是文档链接:

http://odyniec.net/projects/imgareaselect/usage.html#callback-functions

有人解决过这个问题吗?

最佳答案

好的,我还没有一个可以正常工作的开发环境,所以我无法对此进行测试,但是...

在第421行的jquery.imgareaselect.js(我正在使用v0.9.8)中:

function cancelSelection() {
    $(document).unbind('mousemove', startSelection)
        .unbind('mouseup', cancelSelection);
    hide($box.add($outer));

    setSelection(selX(x1), selY(y1), selX(x1), selY(y1));

    if (!this instanceof $.imgAreaSelect) {
        options.onSelectChange(img, getSelection());
        options.onSelectEnd(img, getSelection());
    }
    /*ADD THIS LINE*/
    options.onCancelSelection(img);
}


另外,在第461行附近,添加一个默认的空函数:

    ...
        onInit: function () {},
        onSelectStart: function () {},
        onSelectChange: function () {},
        onCancelSelection: function () {}, /* Add This line */
        onSelectEnd: function () {}
    }, options));


然后,您应该能够照常注册事件处理程序...

ias = $('#<%=imgMain.ClientID%>').imgAreaSelect({
                ...
                mustMatch: true,
                instance: true,
                onInit: function (img, selection) {
                    $("#tagBox").css('display', 'none');
                },
                onCancelSelection: function (img) {
                    /*Do something*/
                },
                ...
            });


那是我在记事本中可以做的最好的事情。如果明天仍然是个问题,我将带一个开发环境。

10-01 13:49