Как отловить событие отмены выбора в 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);
});