Как отловить событие отмены выбора в SDK надстройки в Firefox

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

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

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

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);
 });
Другие вопросы по тегам