Flot - обнаружение щелчка левой кнопкой мыши и щелчка правой кнопкой мыши

Я рисую линейный график с помощью 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);

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


person Community    schedule 04.10.2011    source источник
comment
stackoverflow.com/questions/1206203/   -  person NimChimpsky    schedule 04.10.2011
comment
На самом деле это не вопрос флота, вы спрашиваете, может ли Javascript обнаруживать правые щелчки, о чем уже говорилось много раз. Поиск - ваш друг!   -  person Alex    schedule 04.10.2011
comment
Извините, я должен быть более ясным. Я хочу обнаруживать левые и правые щелчки по серии плавающего графика, а не где-либо на странице.   -  person    schedule 04.10.2011
comment
Что ж, вы говорите, что способны обнаруживать щелчок левой кнопкой мыши, поэтому вы наверняка просто применяете приведенные выше ссылки, чтобы обнаружить щелчок правой кнопкой мыши?   -  person Alex    schedule 05.10.2011


Ответы (1)


Если посмотреть на источник флота, это не встроенная функция. Он закодирован для обработки только событий mousemove, mouseleave и click в сетке. На вашем месте я бы занялся непосредственным изменением источника 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);
      }
   }
});

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

person Mark    schedule 06.10.2011