Как перехватить событие отмены выбора в Add-on SDK в Firefox

Я использую Add-on Builder & SDK для разработки надстройки Firefox. Отлавливаю событие, когда пользователи выделяют фрагмент текста по сниппету:

var selection = require("sdk/selection");
selection.on('select', function () {
//Doing something
});

Однако я также хочу делать другие вещи, когда пользователи больше не выбирают этот текст, но я не могу понять, как это сделать. Кто-нибудь может помочь мне с этим? Спасибо большое.


person harryngh    schedule 27.06.2013    source источник


Ответы (1)


Я не знаю, есть ли события при отмене выбора текста.

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

 var selection = require("sdk/selection");
 var lastText;

 function addSelection(){
    var selection = false;
    var body = document.body;
    if(!selection.text){
        //deselection
        //remove DOM listeners
        body.removeListener('click', addSelection);
    }
    if (!selection.isContiguous) {
         for (var subselection in selection) {
             if(subselection.text == lastText){
                 selection = true;
             }
         }
    } else if(selection.text && selection.text == lastText){
         selection = true;
    }

    if(!selection){
        //deselected
        //remove DOM listeners
    }

 }
 selection.on('select', function () {
    var body;
    if(lastText !== selection.text){
       //deselected
       //remove listeners
    };
    lastText = selection.text;

    body = document.body;

    //add DOM listeners like click - that can potentially remove selection
    body.addEventListener('click', addSelection);
 });
person prasun    schedule 08.07.2013