0

我使用 Add-on Builder & SDK 来开发 Firefox 插件。当用户通过片段选择一段文本时,我捕捉到该事件:

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

但是,当用户不再选择该文本时,我还想要做其他事情,但我不知道该怎么做。任何人都可以帮助我吗?非常感谢。

4

1 回答 1

1

我不知道是否有关于取消选择文本的事件。

但是,您可以在包含该文本的 body 或 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);
 });
于 2013-07-08T07:54:55.460 回答