Flot - Обнаружение левого и правого щелчка - PullRequest
0 голосов
/ 04 октября 2011

Я рисую линейный график, используя Flot.Он обновляется в режиме реального времени и имеет несколько серий.Я хочу, чтобы можно было определять щелчки левой и правой мышью по отдельным сериям на графике.

В настоящее время я могу обнаружить щелчок левой кнопкой мыши, но щелчок правой кнопкой мыши вызывает меню браузера в правом щелчке.

Вот что я получил до сих пор:

    function myClick(event, pos, obj) {
        if (!obj) { 
            return;
        }
        alert('clicked!');
    }


    var placeholder = $("#placeholder");


    // setup plot
    var options = {
        ...
        grid: {clickable: true, hoverable: true},
        ...
    };


    var initialData = getMyData();

    var plot = $.plot(placeholder,  initialData , options);

    placeholder.bind("plotclick", myClick);

Есть ли способ обнаружить щелчок правой кнопкой мыши на серии на графике?

1 Ответ

1 голос
/ 06 октября 2011

Глядя на источник flot, это не встроенная функция. Он закодирован для обработки только событий перемещения мыши, отпускания мыши и щелчка в сетке. Если бы я был вами, я бы посмотрел на изменение исходного кода flot и замену события click на событие mousedown. Как только вы это сделаете, должно быть легко справиться с левыми и правыми против центральных кликов.

редактирует

Я понимаю, что это старый ответ, но мне пришла в голову мысль. Обойти эту проблему, не изменяя источник, - использовать plothover, чтобы отслеживать, находится ли мышь над точкой, а затем привязать общий обработчик mousedown к div графика.

var currentPoint = null;
$("#placeholder").bind("plothover", function (event, pos, item) {
    if (item) {
        currentPoint = item;
    } else {
        currentPoint = null;               
    }
});

$('#placeholder').mousedown(function(event) {
   if (currentPoint)
   {
      switch (event.which) {
        case 1:
            alert('Left mouse button pressed on ' + currentPoint.series.label);
            break;
        case 2:
            alert('Middle mouse button pressed on ' + currentPoint.series.label);
            break;
        case 3:
            alert('Right mouse button pressed on ' + currentPoint.series.label);
            break;
        default:
            alert('You have a strange mouse on ' + currentPoint.series.label);
      }
   }
});

См. Скрипку здесь .

...